yeayee:Python数据分析及可视化实例目录1.4
优采云 发布时间: 2021-02-12 10:01yeayee:Python数据分析及可视化实例目录1.4
文章系列总目录:
yeayee:Python数据分析和可视化示例目录
1.背景介绍
(1)连接到*敏*感*词*留下的作业,使用Cookies不用密码登录到今日的头条,并自动将回复回复到上一节采集的URL。经过测试,响应频率今日头条的速度太快了(3),挂起了提交按钮,因此,本文旨在解释如何执行POST,而Login也是一个原因。
在代码中设置Cookie时,请携带主机(如果有)。
(2)响应内容也很熟练。在这种情况下,响应内容由“标题”,“ 关键词”和促销标语组成,以避免被机器人识别为重复内容。
呵呵,不要以为找到POST_URL并发布数据后才能得到回复!需要明确的是,它不起作用。因为提交释放按钮时,仍然会加载几个链接,从而更改了会话中的Cookie。因此,在使用请求时,它还会模拟先前的Get请求并自动更新Session。例如,在这种情况下,还需要一个Get请求:/ user / info /
PS:我不知道他们的程序员为什么要重复将Post数据重复为两个变量并将其提交到数据库?
(3)是的,您现在可以成功发布。扩展:登录网站的POST参数很难获得,尤其是JS动态生成的一些参数。此时将使用PhantomJS。Xchaoinfo /再次推荐。他妈的登录,所有操作都可以登录,如果您没有登录,也可以为猫和老虎拍照。我不会专门谈论邮政登录。使用Cookie单一帐户登录采集数据对于大多数人来说已经足够了,更高级的黑操作,涉及灰生产和恶意爬网程序的操作,不便进行详细说明(例如更改IP,更改ID,更改IQ等)。
([4)下一个要点是关于多线程和多进程的消息?还是继续向Du Niang提供工件Phantoms?给来宾留言!!!
2.源代码
# coding = utf-8
import requests
import re, json
from bs4 import BeautifulSoup
import time
headers = {
'Host': 'www.toutiao.com',
'content-type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
'Cookie': 'tt_webid=646855411836120***8; 。。。。不要随便让人看到你的小秘密',
'Connection': 'keep-alive'
}
s = requests.session()
def post_data(base_url,post_content,post_id):
try:
# base_url = 'http://toutiao.com/group/64689424888533888/'
url2 = 'http://www.toutiao.com/user/info/'
content = s.get(url2, headers=headers) # 获取Useinfog,更新session
# soup = BeautifulSoup(content, "lxml")
# print(soup.prettify())
headers['Referer'] = base_url
url3 = 'http://www.toutiao.com/api/comment/post_comment/'
data = {
'status':post_content,
'content': post_content,
'group_id':post_id,
'item_id':post_id
}
s.post(url3, headers=headers, data=data) # 评论文章
print('评论成功啦,嚯嚯')
except:
print('掉坑里了,爬起来')
pass
f_lines = open('sorted.txt','r',encoding='utf-8').readlines()
posted_urls = open('posted.txt','r',encoding='utf-8').read()
# print(f_lines[0].strip().split(',')) # 实现记录已评论的Url,中断后可以接着评论
for f_line in f_lines:
if 'http://toutiao.com/group/' in f_line: # 说明是可以评论的文章
line_list = f_line.strip().split(',')
base_url = line_list[1]
print(base_url)
post_content = '大神,你发的《'+ line_list[2]+'》很有借鉴意义,能否转发呢?'
# print(post_content)
post_id = base_url.split('/')[-2]
if base_url not in posted_urls : # 进入下一个循环
try:
time.sleep(3)
post_data(base_url,post_content,post_id)
f_posted = open('posted.txt','a',encoding='utf-8')
f_posted.write(base_url+'\n')
f_posted.close()
except:
print('又他妈掉坑里了,爬起来')
pass
else:
print('曾经评论过了')
yeayee:Python数据分析和可视化示例目录