豆瓣教程: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文件的格式如下:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线