1 Star 0 Fork 1

ENYOOR/hellopc

forked from jackfrued/hellopc 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
example14.py 1.67 KB
一键复制 编辑 原始数据 按行查看 历史
jackfrued 提交于 2020-06-27 16:20 . 修改了部分代码
"""
将爬取的数据写入ElasticSearch搜索引擎
"""
import json
import random
import re
import time
import bs4
import requests
def handle_white_space(content):
return re.sub(r'\n|\s{2,}', ' ', content.strip())
counter = 0
for page in range(1, 11):
resp = requests.get(
url=f'https://movie.douban.com/top250?start={(page - 1) * 25}',
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/83.0.4103.97 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;'
'q=0.9,image/webp,image/apng,*/*;'
'q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
},
)
soup = bs4.BeautifulSoup(resp.text, features='lxml')
elements = soup.select('.info')
for element in elements:
counter += 1
title = element.select_one('.title').text
info = element.select_one('.bd>p:first-child').text
info = handle_white_space(info)
star = element.select_one('.rating_num').text
quote = element.select_one('.inq').text
resp = requests.post(
url=f'http://47.104.31.138:9200/douban/movie/{counter}/',
headers={
'content-type': 'application/json'
},
data=json.dumps({
'title': title,
'info': info,
'star': star,
'quote': quote
})
)
# 随机休眠一段时间避免爬取过于频繁
time.sleep(random.random() * 5)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/enyoor/hellopc.git
[email protected]:enyoor/hellopc.git
enyoor
hellopc
hellopc
master

搜索帮助