网页内容抓取工具(Python用做数据处理还是相当不错的,你知道吗?(上))
优采云 发布时间: 2021-12-17 02:27网页内容抓取工具(Python用做数据处理还是相当不错的,你知道吗?(上))
Python非常适合数据处理。如果你想做爬虫,Python 是个不错的选择。它有许多已编写的包。只需调用它们就可以完成许多复杂的功能。本文所有功能均基于 BeautifulSoup 包。
1 Pyhton获取网页内容(即源码)
page = urllib2.urlopen(url)
contents = page.read()
#获得了整个网页的内容也就是源代码
print(contents)
url代表网址,contents代表网址对应的源码,urllib2是需要用到的包,上面三句代码就可以得到网页的整个源码
2 获取网页中想要的内容(先获取网页的源代码,然后分析网页的源代码,找到对应的标签,然后提取标签中的内容)
2.1 以豆瓣电影排名为例
网址是,输入网址后会出现下图
现在我需要获取当前页面上所有电影的名称、评分、评论数量、链接
从上图中,红色圆圈是我想要获取的内容,蓝色横线是对应的标签,这样分析就完成了,现在就是写代码来实现,Python提供了很多获取想要的方法内容,这里我使用BeautifulSoup来实现,很简单
#coding:utf-8
'''
Created on 2016��5��17��
@author: jsjxy
'''
import urllib2
import re
from bs4 import BeautifulSoup
from distutils.filelist import findall
page = urllib2.urlopen('http://movie.douban.com/top250?format=text')
contents = page.read()
#print(contents)
soup = BeautifulSoup(contents,"html.parser")
print("豆瓣电影TOP250" + "\n" +" 影片名 评分 评价人数 链接 ")
for tag in soup.find_all('div', class_='info'):
# print tag
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 )
控制台输出,也可以写入文件
前三行代码获取整个网页的源码,然后开始使用BeautifulSoup进行标签分析。find_all 方法就是找到这个标签的所有内容,然后在这个标签中继续搜索。如果标签有特殊的属性声明,可以一步找到出来,如果没有特殊的属性声明像这张图中求值者数量前面的标签只有一个'span',那么所有的span找到标签,并依次选择相应的标签。在这张图中,它是第三个,所以这个方法可以找到特定行或列的内容。代码比较简单,易于实现。如有不对的地方请大家指出,共同学习。
源代码地址: