python爬虫

310 阅读2分钟

**

python爬虫小案例

**

网址:www.phb123.com/renwu/fuhao…

整体代码

# -*- coding: utf-8 -*-
# @Time : 2022-05-06 10:51
# @Author : 相信光*_*
# @FileName: 爬虫.py
# @Software: PyCharm
# @Blog :http://blog.csdn.net/u010105243/article/
def loaddata(url):#读取数据
    from bs4 import BeautifulSoup
    import requests
    #设置请求
    headers = {
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
    }
    f = requests.get(url,headers = headers)#获取内容
    soup = BeautifulSoup(f.content,"lxml")#解析内容
    ranktable = soup.find_all('table',class_="rank-table")[0]#获取榜单
    trlist = ranktable.find_all('tr')#获取tr
    trlist.pop(0)
    persionlist = []#列表
    for tr in trlist:
        #存取数据
        persion = {}
        persion['num'] = tr.find_all('td')[0].string#编号
        persion['name'] = tr.find_all('td')[1].string#名称
        persion['money'] = tr.find_all('td')[2].string#财产
        persion['company'] = tr.find_all('td')[3].string#企业
        persion['country'] = tr.find_all('td')[4].string#国家
        persionlist.append(persion)
    print("页面"+url+"爬取成功")
    return persionlist

# 读取数据
def loadalldata():
    alldata = []#新建用来保存数据的列表
    for i in range(1,16,1):#遍历榜单
        #设置url
        url = "http://www.phb123.com/renwu/fuhao/shishi_"+str(i)+".html"
        #获取数据
        data = loaddata(url)
        #保存数据
        alldata = alldata + data
    return alldata

def savedata(path,persionlist):#保存数据
    import xlwt
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('test')
    worksheet.write(0, 0, '排名')
    worksheet.write(0, 1, '姓名')
    worksheet.write(0, 2, '财富')
    worksheet.write(0, 3, '企业')
    worksheet.write(0, 4, '国家')
    #数据写入
    for i in range(1,len(persionlist)+1,1):
        worksheet.write(i, 0, persionlist[i - 1]['num'])
        worksheet.write(i, 1, persionlist[i - 1]['name'])
        worksheet.write(i, 2, persionlist[i - 1]['money'])
        worksheet.write(i, 3, persionlist[i - 1]['company'])
        worksheet.write(i, 4, persionlist[i - 1]['country'])
    #保存数据
    workbook.save(path)
    print("数据保存成功:"+path)
if __name__ == '__main__':
    data = loadalldata()
    savedata('1.xls',data)

1,确定网站后,按f12进入开发者模式,获得HTML代码

对于想获得的元素区域,ctrl+shift+c,使用鼠标在网页之间移动,相应代码片段会高亮 在这里插入图片描述

2,按顺序解释函数

1,loaddata(url)函数

引入bs4和requests包后, headers是请求头,网站为了防止恶意请求,会有相应的拦截,f12后,在network栏随便找到一个请求头来进行伪装。例如:找到user-agent,复制后,按代码格式使用 在这里插入图片描述 user-agent就是请求头

headers = {
      user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
    }

request请求是封装好的,向其加入参数后,直接请求到该网页。 开始对网页解析,bs4内的beautifulsoup是对元素的捕捉和解析。更推荐re模块的正则表达式(好理解和方便使用)。

2 loadalldata()函数

其实每次的请求都是一个页面,为了可以得到其他页面,我们可以看几个页面来得到规律。 在这里插入图片描述 总结之后,可以根据需要,进行相应页面的请求。

3 savedata()函数

将获得的数据存入excel表格中,xlwt库的使用,这里不再进行过多赘述。

3 直接使用

将相应函数在主函数中调用即可。

在这里插入图片描述