Python爬虫初步探索

朋友有个爬数据填表的需求,想让我实现一下,正好Python在爬虫上应用广泛,我也可以藉此练练手。

2020年的第一天,开工。

小目标:每日定时爬取某网页中一个表格中指定数据。

早上,先了解了各种爬虫技术(其实就是第三方库)的差异、优缺点,发现功能上基本类似或者有交集。

其中一篇文章说到Scrapy适用于大项目,Requests使用于小项目,暂时作参考吧,先用着Requests。

在查阅资料过程中,发现Requests库的作者又有个新库——Requests-html。So,决定了,用Requests-html。

做个小demo,先爬个百度,我要爬到搜索键中的“百度一下”四个字。步骤如下:

  1. 安装Requests-html,pip安装即可。(过程中因为本地之前装了几个Python环境,pip命令无法正常使用。想到以后项目、包、环境都要管理,所以最好开始使用Anaconda,这就是另一个Blog了)
  2. 上代码,参考
from requests_html import HTMLSession

session = HTMLSession()
r = session.get('https://www.baidu.com/')
print(r.html.html)
  1. print可以看到baidu.com所有的html代码,在Chrome中使用开发者工具(F12)查看到“百度一下”四字嵌套在多层的标签当中,要提取出来就要使用定位元素的技术,这时有一个重要的概念“CSS选择器”,简单理解就是元素嵌套位置的路径。如图:(获取CSS选择器,可以在开发者工具中的element页中,对选中的元素右键选择“Copy”→“Copy selector”)
    在这里插入图片描述
  2. 元素的id = su,使用find函数中,CSS选择器的参数填入’#su’,取出attribute为’value’,代码如下
from requests_html import HTMLSession

session = HTMLSession()
r = session.get('https://www.baidu.com/')
searchword = r.html.find('#su', first=True)
print(searchword.attrs['value'])
# 百度一下

至此,小demo完成,输出“百度一下”四字。
回到朋友的需求,以同样的方法,获取到了指定位置的数据。

但是这种方式的缺点也很明显,要爬取数据的CSS选择器要逐个去寻找,不能模糊匹配、模糊查找、向上父级标签遍历。应该有更好的解析HTML方法,以后继续研究(XPATH等)。另外,朋友的需求中,有网页登录账户、爬取滚动刷新信息等技术未完全解决。

贴几个链接
doc:
模拟登录
解析HTML模糊查找、匹配(在后半部分)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值