爬虫抓取网页数据(用Python爬虫进行网站数据获取(I)(组图))
优采云 发布时间: 2021-09-21 23:08爬虫抓取网页数据(用Python爬虫进行网站数据获取(I)(组图))
这是很久以前的文章,幸运的是今天能够弥补,但也要感谢最近开始了解一些事情。如果你还没有通过第一篇文章,你可以点击下面的链接先看看。本文假定您已经掌握了Python的基本语法和简单爬虫技术
单击以跳转到第1章:使用Python爬虫获取网站数据(I)
这一次,我们将解释一个爬虫程序登录到doublan,包括验证代码验证和登录后的简单数据爬虫
好的,给我看看密码
首先,我们需要了解背景。登录网站,实际上就是向服务器提交一些数据,包括用户名和密码、验证码以及其他您看不到的数据。不可见数据从网站到不同,但基本例程收录类似于ID的数据,每次提交的值不同,并且在前端看不到时提交
第一步是查看chrome上的登录页面,观察并找到一些需要提交的值,如前所述
/登录
给你个提示。如果您在没有Fidler或Charles等数据包捕获工具帮助的情况下直接登录,则无法查看要提交的数据。因此,作者估计输入了错误的验证代码进行验证。通过查看元素的登录名,您可以看到要提交的数据
如上图所示,您可以找到其他隐藏的提交信息,其中captcha解决方案是验证码,captcha ID是隐藏的ID值
第二步是找到要提交的隐藏ID和验证码
解决验证码提交问题。有两种主流方法。一种是手动输入,适用于低复杂性和并发性的新手爬虫。我们介绍了这种方法;二是利用OCR图像识别技术对训练数据进行一定精度的判断。这种方法比较重,不适合初学者。对童鞋感兴趣的人可以自己试穿
对于手动输入,首先我们需要查看验证码,然后输入它。所采用的方法是本地下载验证码图像,到相应路径打开图像,输入,然后提交登录表单
通过观察,我们可以发现验证码图像存储在这个路径中,所以我们可以在解析页面后找到这个路径后下载图像
隐藏ID的获取相对简单。在源代码下找到相应的ID,然后将其动态分配给提交表单
#coding=utf-8
#没有上面这行输入中文会报错,注意
import requests
from lxml import html
import os
import re
import urllib.request
login_url ="https://www.douban.com/login"
s = requests.session()
r = s.get(login_url)
tree = html.fromstring(r.text)
el = tree.xpath('//input[@name="captcha-id"]')[0]
captcha_id = el.attrib['value']
#获取隐藏id
el2 = tree.xpath('//img[@id="captcha_image"]')[0]
captcha_image_url = el2.attrib['src']
imgPath = r'E:\img'
res=urllib.request.urlopen(captcha_image_url)
filename=os.path.join(imgPath,"1"+'.jpg')
with open(filename,'wb') as f:
f.write(res.read())
#保存验证码图片
captcha_solution= input('请输入验证码:')
第三步:提交表格
该表与步骤1中观察到的值一致
操作结果如下:
好了,这只爬行动物已经完成了。事实上,许多人已经发现API数据采集是一种更方便、更稳定的方法。通过网页爬虫的方法,首先,网页结构会发生变化,其次,我们需要对抗彼此的反爬虫机制。使用API是一种方便、高速和高光泽的方法