import requests
from bs4 import BeautifulSoup
import time
import json
#定义执行函数
def result():
#定义起始url的page参数和终了的page参数,并在参数符合条件的情况下进行循环
page=0
pages=250
while page<=pages:
#豆瓣的url是可以通过改变start的参数实现的
url=f'https://movie.douban.com/top250?start={page}&filter='
print('正在爬取%s'%{url})
html=requests.get(url=url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363'}).text
soup=BeautifulSoup(html,'lxml')
print(soup)
ol=soup.find('ol')
lis=ol.find_all('li')
#读出每一步电影的信息,并把换位符、空格等去掉,并写入txt文件中
for li in lis:
content=[li.find('em').text.strip(),
li.select('a')[1].text.replace('\n',''),
''.join(li.find('p').text.replace('\n','').split()),
li.select('span.rating_num')[0].text.strip(),
li.select('div.star span')[3].text.strip()
]
write_to_file(content)
page+=25
time.sleep(1)
else:
print('爬取完毕')
#定义写入函数,将电影的信息写入txt文件
def write_to_file(content):
with open('doubanTOP250.txt','a',encoding='utf-8') as f:
for i in content:
f.write(json.dumps(format(i).strip())+ 20*' ')
f.write('\n')
def main():
result()
if __name__=='__main__':
main()
爬取豆瓣TOP50
最新推荐文章于 2024-04-13 07:32:25 发布