beautifulsoup爬取网页中的表格_python爬取网站数据四种姿势,你值得拥有

本文介绍了使用Python进行网页数据爬取的四种方法:同步(requests+BeautifulSoup)、并发(concurrent.futures)、异步(aiohttp+asyncio)以及Scrapy框架。通过对比分析,展示了它们的执行时间和效率,强调在实际应用中需根据需求选择合适的方法。
摘要由CSDN通过智能技术生成

前言

首先,分析来爬虫的思路:先在第一个网页(https://www.wikidata.org/w/index.php?title=Special:WhatLinksHere/Q5&limit=500&from=0)中得到500个名人所在的网址,接下来就爬取这500个网页中的名人的名字及描述,如无描述,则跳过。接下来,我们将介绍实现这个爬虫的4种方法,并分析它们各自的优缺点,希望能让读者对爬虫有更多的体会。实现爬虫的方法为:

  • 一般方法(同步,requests+BeautifulSoup)
  • 并发(使用concurrent.futures模块以及requests+BeautifulSoup)
  • 异步(使用aiohttp+asyncio+requests+BeautifulSoup)
  • 使用框架Scrapy
1ecdc32c2613a12fd6ba681dc93efe96.png

一般方法

一般方法即为同步方法,主要使用requests+BeautifulSoup,按顺序执行。完整的Python代码如下:

import requestsfrom bs4 import BeautifulSoupimport time#python学习群:695185429# 开始时间t1 = time.time()print('#' * 50)url = "http://www.wikidata.org/w/index.php?title=Special:WhatLinksHere/Q5&limit=500&from=0"# 请求头部headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}# 发送HTTP请求req = requests.get(url, headers=headers)# 解析网页soup = BeautifulSoup(req.text, "lxml")# 找到name和Description所在的记录human_list = soup.find(id='mw-whatlinkshere-list')('li')urls = []# 获取网址for human in human_list:    url = human.find('a')['href']    urls.append('https://www.wikidata.org'+url)# 获取每个网页的name和descriptiondef parser(url):    req = requests.get(url)    # 利用BeautifulSoup将获取到的文本解析成HTML    soup = BeautifulSoup(req.text, "lxml")    # 获取name和description    name = soup.find('span', class_="wikibase-title-label")    desc = soup.find('span', class_="wikibase-descriptionview-text")    if name is not None and desc is not None:        print('%-40s,%s'%(name.text, desc.text))for url in urls:    parser(url)t2 = time.time() # 结束时间print('一般方法,总共耗时:%s' % (t2 - t1))print('#' * 50)

输出的结果如下(省略中间的输出,以……代替):

##################################################George Washington                       ,    first President of the United StatesDouglas Adams                           ,    British author and humorist (1952–2001)......Willoughby Newton                       ,    Politician from Virginia, USAMack Wilberg                            ,    American conductor一般方法,总共耗时:724.9654655456543##################################################

使用同步方法,总耗时约725秒,即12分钟多。一般方法虽然思路简单,容易实现,但效率不高,耗时长。那么,使用并发试试看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值