代码拉取完成,页面将自动刷新
同步操作将从 jackfrued/hellopc 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
"""
将爬取的数据写入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)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。