网上看到有人用python做爬虫练习,自己也学着来个
(虽然很烂)
如果你很不幸的看到了,摊手...:
# -*- coding:utf-8 -*-
# Author:Jacky Cheng
'''爬取豆瓣高分榜 电影数据
遇到的问题:
1、requests,get(url) 的返回对象必须 加上 .text 属性,否则 在使用BeautitulSoup时无论怎样
调整 解析器 都会报错。
2、解析器:html.parse
lxml
html5lib
无论哪一种并不能一定能解析成功,需多次尝试
3、find_all() 根据CSS 定位 标签 用 关键字"class_" , 以避免 与 python内置的class关键字冲突
4、附上 BeaufulSoup 官方文档地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
'''
import html
import requests
from bs4 import BeautifulSoup
content = ''
for i in range(11):
try:
url = 'https://www.douban.com/doulist/240962/?start={}'.format(i)
response = requests.get(url).text
bsObj = BeautifulSoup(response, 'html5lib')
div_tags = bsObj.find_all('div', {'class':'bd doulist-subject'})
for div_tag in div_tags:
move_name = div_tag.find('div', {'class':'title'}).find('a').get_text().strip()
move_link = div_tag.find('div', class_='title').find('a')['href'].strip()
actors = div_tag.find('div', class_='abstract').get_text().strip()
rate = div_tag.find('div', class_='rating').find('span', class_='rating_nums').get_text().strip()
rate_number = div_tag.find('div', class_='rating').find_all('span')[2].get_text().strip()
content += move_name+';\n\t'+'评分:'+rate+'分'+';\n\t'+rate_number+';\n\t'+actors+';\n\t'\
+'豆瓣地址:'+move_link+'\n\n'
print(type(content))
except:
print("在{}发生了一个错误,请注意》》》》".format(url))
continue
with open('豆瓣高分榜.txt', 'w', encoding='utf-8') as f:
f.write(content)
f.close()
print("恭喜 完成工作!")