第三章|第三章 数据解析(十二)续 2019-12-23
十二、bs4 – 实战– 豆瓣Top250爬虫实战(续)
爬取内容
爬取豆瓣Top250
注意事项
1、headers
2、编码
3、使用BeautifulSoup
网站:
https://movie.douban.com/top250
示例代码:
import requests
from bs4 import BeautifulSoup
headers= {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1;
WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
# 获取详情页面url
def get_detail_urls(url):
resp = requests.get(url, headers=headers)
# print(resp.text)
html = resp.text
soup = BeautifulSoup(html, 'lxml')
lis = soup.find('ol',class_='grid_view').find_all('li')
detail_urls = []
for li in lis:
detail_url = li.find('a')['href']
# print(detail_url)
detail_urls.append(detail_url)
return detail_urls
# 解析详情页面内容
def parse_detail_url(url):
#解析详情页面内容
resp = requests.get(url, headers=headers)
# print(resp.text)
html = resp.text
soup = BeautifulSoup(html, 'lxml')
#电影名
name = list(soup.find('div',id='content').find('h1').stripped_strings)
# 去除列表,输出字符串
name = ''.join(name)
# print(name)
#导演
director = list(soup.find('div',id='info').find('span').find('span', class_='attrs').stripped_strings)
director = ''.join(director)
# print(director)
#编剧
screenwriter = list(soup.find('div',id='info').find_all('span')[3].find("span",class_='attrs').stripped_strings)
screenwriter = ''.join(screenwriter)
# print(screenwriter)
# 主演
actor = list(soup.find('span',class_='actor').find('span', class_='attrs').stripped_strings)
# print(actor)
#评分
score = soup.find('strong', class_='llrating_num').string
print(score)
f.write('{},{},{},{},{}\n'.format(name,director, screenwriter, ''.join(actor), score))
【第三章|第三章 数据解析(十二)续 2019-12-23】
def main():
base_url ='https://movie.douban.com/top250?start={}&filter='
with open('Top250.csv', 'a',encoding='utf-8') as f:
#调用get_detail_urls函数
for x in range(0.251,25):
url = base_url.format(x)
detail_urls = get_detail_urls(url)
for detail_url in detail_urls:
parse_detail_url(detail_url, f)
if__name__ == '__main__':
main()
上一篇文章 第三章 数据解析(十二) 2019-12-22 地址:
https://www.jianshu.com/p/a70e17e2e7c9
下一篇文章 第三章 数据解析(十三) 2019-12-24 地址:
https://www.jianshu.com/p/3303a724cd67
以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 使用协程爬取网页,计算网页数据大小
- Java|Java基础——数组
- Python数据分析(一)(Matplotlib使用)
- Jsr303做前端数据校验
- Spark|Spark 数据倾斜及其解决方案
- 数据库设计与优化
- 爬虫数据处理HTML转义字符
- 数据库总结语句
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听