Scrapy模拟登录赶集网的实现代码
作者:人丑就要多读书-Wu 时间:2023-02-22 20:33:47
1.打开赶集网登录界面,先模拟登录并抓包,获得post请求的request参数
2. 我们只需构造出上面的参数传入formdata即可
参数分析:
setcookie:为自动登录所传的值,不勾选时默认为0。
__hash__值的分析:只需要查看response网页源代码即可 ,然后用正则表达式提取。
3.代码实现
1.workon到自己的虚拟环境 cmd切换到项目目录,输入scrapy startproject ganjiwangdenglu,然后就可以用pycharm打开该目录啦。
2.在pycharm terminal中输入scrapy ganji ganjicom 创建地址,如下为项目目录
3. 代码详情
import scrapy
import re
class GanjiSpider(scrapy.Spider):
name = 'ganji'
allowed_domains = ['ganji.com']
start_urls = ['https://passport.ganji.com/login.php']
def parse(self, response):
hash_code = re.search(r'"__hash__":"(.+)"}', response.text).group(1) # 正则获取哈希
img_url = 'https://passport.ganji.com/ajax.php?dir=captcha&module=login_captcha' # 验证码url
yield scrapy.Request(img_url, callback=self.do_formdata, meta={'hash_code': hash_code}) # 发送获取验证码请求并保存验证码到本地
def do_formdata(self, response):
with open('yzm.jpg', 'wb') as f:
f.write(response.body)
# 验证码三种方案:1,保存下来手动输入,2,云打码,3 tesseract模块,在这里我们手动输入
code = input('请输入验证码:')
# 创建表单
formdata = {
'username': 'your_username',
'password': 'your_password',
'setcookie': '14',
'checkCode': code,
'next': '',
'source': 'passport',
'__hash__': response.request.meta['hash_code'] # meta是在respose.request中
}
login_url = "https://passport.ganji.com/login.php"
yield scrapy.FormRequest(url=login_url, formdata=formdata, callback=self.after_login) # 发送登录请求
def after_login(self, response):
print(response.text)
4.终端输入scrapy carwl ganji 即可大功告成 。
返回来的json字符串解析如下:
注:setting中的设置不在赘述。
来源:https://www.cnblogs.com/bertwu/p/13210539.html
标签:Scrapy,登录,赶集网
0
投稿
猜你喜欢
Js-$.extend扩展方法使方法参数更灵活
2024-05-02 16:16:21
Python ftp上传文件
2023-10-01 06:35:34
ASP UTF-8编码下字符串截取和获取长度函数
2011-03-30 10:52:00
Python正则表达式re.sub()用法详解
2022-05-29 14:30:01
机器学习经典算法-logistic回归代码详解
2021-05-06 23:56:12
python数据结构的排序算法
2021-03-11 04:04:10
实现动画效果核心方式的js代码
2024-04-19 10:45:39
JS鼠标事件大全 推荐收藏
2024-05-28 15:41:00
如何显示数据库里的图片?
2010-06-08 09:36:00
一台linux主机启动多个MySQL数据库的方法
2024-01-14 00:46:00
CentOS 7上为PHP5安装suPHP的方法(彭哥)
2024-03-24 23:34:12
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2024-05-22 10:40:32
Python 模拟死锁的常见实例详解
2022-08-02 04:57:18
如何进行MySQL数据库表的故障检测
2009-02-10 10:34:00
JavaScript判断微信浏览器实例代码
2024-04-18 09:30:31
python获取txt文件词向量过程详解
2021-07-27 12:54:35
MySQL之xtrabackup备份恢复的实现
2024-01-15 06:59:08
python中实现php的var_dump函数功能
2023-11-16 07:11:04
扫盲大讲堂:mysql出错的代码解析及解答
2009-09-05 10:08:00
全面分析Python的优点和缺点
2023-11-09 11:00:07