版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
爬虫登录、爬取并评论
需求:登录读网、爬取并评论
环境:windows系统
开发语言:python
使用工具类:
bs4
requests
一:获取登录网页login_url和data参数
可以用错误密码来快速获取登录的login_url
地址,之后再用正确的登录来获取请求里面的登录data_comment
参数信息
用requests.session()
来保存登录的cookies信息
from bs4 import BeautifulSoup
import requests
#一:获取登录cookies------------------------------------------------------------------------------
#获取登录网页内容
login_url = 'https://xx.xxxxxxxxx.cn/wp-admin/admin-ajax.php'
data = {
'action':'ajaxlogin',
'username':'[email protected]',
'password':'xxxxxxx',
'remember':'true'
}
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0'}
session = requests.session()
login_resp = session.post(url=login_url,headers=header,data=data)
# print(login_resp.cookies)
# #存储登录网页内容
# with open('./login_resp.html','w',encoding='utf-8') as fp:
# fp.write(login_resp.text)
二:用带登录参数的session获取要爬取的网页内容
定位需要的评论内容
#二:用登录cookies获取要爬取的网页内容--------------------------------------------------------------
detail_url = 'https://xx.xxxxxxxxx.cn/psychology/8384/'
detail_resp = session.get(url=detail_url,headers=header)
# #存储要爬取的网页内容
# with open('./detail_resp.html','w',encoding='utf-8') as fp:
# fp.write(detail_resp.text)
bs = BeautifulSoup(detail_resp.text,'html.parser')
comment_list = bs.find_all('li',class_='comment-item')
for info in comment_list:
name_list = info.find('div',class_='comment-txt').find('div',class_='hd').find('cite',class_='fn').text
data_list = info.find('div',class_='comment-txt').find('div',class_='hd').find('p',class_='date').text
text_list = info.find('div',class_='comment-txt').find('div',class_='bd').find('p').text
reply_list = info.find('div',class_='comment-txt').find('div',class_='bd').find('a')['href']
inf = {
'评论者':name_list,
'评论日期':data_list,
'评论内容':text_list,
# '回复链接':reply_list
}
print(inf)
三:用登录cookies获取要爬取的网页内容
自己评论一下来获取detail_url
:和data_comment
#三:提交评论------------------------------------------------------------------------------
comment_url = 'https://xx.xxxxxxxxx.cn/wp-comments-post.php'
data_comment={
'comment':'comment_3',
'submit':'',
'comment_post_ID':'8384',
'comment_parent':'0'
}
comment_resp = session.post(comment_url,data=data_comment)
if comment_resp.status_code ==200:
print('评论成功')
else:
print('评论发送失败,状态码为{}'.format(comment_resp.status_code))
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。