豆瓣教程:Python获取网页指定内容(BeautifulSoup工具的使用方法)
优采云 发布时间: 2021-05-23 20:41豆瓣教程:Python获取网页指定内容(BeautifulSoup工具的使用方法)
本文使用BeautifulSoup工具根据网页的源代码字段分析指定的网页,抓取相应的字段并将其存储在文件中以供参考。
我刚刚提到了一篇文章文章:Python获取网页的指定内容(如何使用BeautifulSoup工具)。自己尝试之后,我发现了一个错误:urllib.error.HTTPError:HTTP错误418。查询后,我发现:一些网页具有反爬行机制。解决方案参考:Python采集器的urllib.error.HTTPError:HTTP错误418错误,您可以设置标头信息(用户代理)并将其模拟为浏览器,以访问这些网站以获取数据。
爬行的网站是:豆瓣电影()
查看网页的源代码:
将文章中的两篇文章文章的代码组合在一起,对代码进行排序后,如下:
# -*- coding:utf-8 -*-
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
from pandas import DataFrame
url = 'http://movie.douban.com/top250?format=text'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
ret = Request(url, headers=headers)
res = urlopen(ret)
contents = res.read()
soup = BeautifulSoup(contents, "html.parser")
print("豆瓣电影TOP250" + "\n" + " 影片名 评分 评价人数 链接 ")
df_ret = DataFrame(columns=[" 影片名","评分","评价人数","链接 "])
count =0
for tag in soup.find_all('div', class_='info'):
m_name = tag.find('span', class_='title').get_text()
m_rating_score = float(tag.find('span', class_='rating_num').get_text())
m_people = tag.find('div', class_="star")
m_span = m_people.findAll('span')
m_peoplecount = m_span[3].contents[0]
m_url = tag.find('a').get('href')
print(m_name + " " + str(m_rating_score) + " " + m_peoplecount + " " + m_url)
df_ret.loc[count] = [m_name, str(m_rating_score),m_peoplecount, m_url]
count = count +1
# 保存输出结果到csv
df_ret.to_csv('movies_names_set.csv', encoding= 'gbk')
print(df_ret.head())
输出的csv文件的格式如下: