最新公告
  • 欢迎您光临尘梦网,我们提供建站技术教学,帮助用户实现从技能提升到技能应用的能力闭环。立即加入我们
  • Python爬虫自动化,帮小姐姐解放双手

    尘梦网因为工作需要,得根据已有的学校名单,采集它们的英文名称,描述,简称有的话也带上。共有 2740 条学校名称数据,一条条去搜索得到结果,然后复制粘贴到表格里,一天下来估计人都傻了。

    花几分钟写了个爬虫小程序,帮助小姐姐解放了双手,成功表现了一波,学姐一阵夸奖,还请我喝了一杯美式咖啡,美滋滋。

    分析问题

    共有 2740 条学校名称数据

    尘梦网在百度百科中搜索清华大学看看

     

    查看网页源代码,可以惊喜的发现,简要描述的数据羡显目地躺在开头!

    尘梦网经过分析可以发现,网页结构简单,可以通过构造URL请求,获取网页源码,然后从中提取我们想要的数据即可

    爬虫代码

    当当当,下面该我们的爬虫上场了

    导入需要用到的库

    1. import requests
    2. import pandas as pd
    3. from random import choice
    4. from lxml import etree
    5. import openpyxl
    6. import logging

    基本配置参数

    1. # 日志输出的基本配置
    2. logging.basicConfig(level=logging.INFO, format=‘%(asctime)s – %(levelname)s: %(message)s’)
    3. wb = openpyxl.Workbook()    # 创建工作簿对象
    4. sheet = wb.active    # 获取活动的工作表
    5. sheet.append([‘学校名称’‘中文简称’‘学校名称(英文)’‘描述’‘百度百科链接’])   # 添加第一行列名
    6. # 产生随机请求头用于切换
    7. user_agent = [
    8.     “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1”,
    9.     “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6”,
    10. ……
    11.     “Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24”
    12.     ]

    读取数据、爬取网页

    1. # 读取已有的学校名称数据
    2. df = pd.read_excel(‘学校名称.xlsx’)[‘学校名称’]
    3. items = df.values
    4. # 遍历  获取每所学校名称
    5. for item in items:
    6.     try:
    7.         # 随机生成请求头
    8.         headers = {
    9.             ‘User-Agent’:choice(user_agent)
    10.         }
    11.         # 构造url
    12.         url = f‘https://baike.baidu.com/item/{item}’
    13.         # 发送请求   获取响应
    14.         rep = requests.get(url, headers=headers)
    15.         # Xpath解析提取数据
    16.         html = etree.HTML(rep.text)
    17.         # 描述
    18.         description = .join(html.xpath(‘/html/head/meta[4][email protected]))
    19.         # 外文名
    20.         en_name = ‘,’.join(html.xpath(‘//dl[@class=”basicInfo-block basicInfo-left”]/dd[2]/text()’)).strip()
    21.         # 中文简称  有的话  是在dd[3]标签下
    22.         simple_name = .join(html.xpath(‘//dl[@class=”basicInfo-block basicInfo-left”]/dd[3]/text()’)).strip()
    23.         sheet.append([item, simple_name, en_name, url])
    24.         logging.info([item, simple_name, en_name, description, url])
    25.     except Exception as e:
    26.         logging.info(e.args)
    27.         pass
    28. # 保存数据
    29. wb.save(‘成果.xlsx’)

    运行效果如下:

    有 2740 页的数据需要请求爬取,为了提高爬取效率,可以使用多线程。

    程序运行一会儿,数据就全部爬取下来啦。

    因为开多线程,爬取的顺序会打乱,按照学姐给的学校名称的表格里的顺序排列好,就可以交付了。

    1. # 程序中记录一下它原本的序号   一起写入Excel
    2.  sort_num = items.index(item)
    1. import pandas as pd
    2. # 读取数据
    3. df = pd.read_excel(‘成果.xlsx’)
    4. # 按原始序号排序
    5. df1 = df.sort_values(by=‘原始序号’)
    6. # 查看排序后的数据
    7. df1.head(8)

    运行效果如下:

    尘梦网(itwork.ren)涉及PHP、Web前端等技术教学,涵盖了jquery插件,css3特效,网站模板,办公资源等需求场景,帮助用户实现从技能提升到技能应用的能力闭环。
    尘梦网 » Python爬虫自动化,帮小姐姐解放双手

    常见问题FAQ

    尘梦网是什么?
    尘梦网(itwork.ren)是互联网综合学习平台。尘梦网(itwork.ren)涉及PHP、Web前端等技术教学,涵盖了jquery插件,css3特效,网站模板,办公资源等需求场景,帮助用户实现从技能提升到技能应用的能力闭环。
    本站课程是否为1对1教学?
    本站为录播课程,可直接寻找对应课程观看,不定时会有直播课
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    免费下载或者会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供部分资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。

    发表评论

    • 24350会员总数(位)
    • 367资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 140稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情