python爬虫(六、正则提取数据)

t o p 250 首先抓取豆瓣top250的网页

首先看主函数

import urllib.request,parser
from bs4 import BeautifulSoup
import re

findlink = re.compile(r'<a href="(.*?)">')
findimage = re.compile(r'<img.*src="(.*?)">',re.S)
findjudge = re.compile(r'<span>([\d]*人评价)</span>')
#以上三个正则表达式是为了下面方便抓取内容
#分别抓取a标签超链接,img标签,span标签多少人评价
begin_url="https://movie.douban.com/top250?start="	#抓取的网址
getdata(begin_url)	#获取数据

获取数据的函数

def getdata(baseurl):
    for i in range(0,1):
        url = baseurl + str(i*25)	#观察豆瓣top250的网页,网页后面的数字代表是哪一张网页
        html = askurl(url)	#askurl()是获取某个网页内容的自定义函数
        soup = BeautifulSoup(html,'html.parser')	#使用bs4解析成树的结构图
        for item in soup.find_all('div',class_='item'):	#遍历div标签且class='item'
            #print(item) item包含了我们想要的全部信息
            item=str(item)	#转化为string类型,因为下面要用正则表达式
            link = re.findall(findjudge,item)	$findall(s1,s2),s1是模式串,s2是匹配串
            print(link)

抓取网页函数

def askurl(url):
    head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"}	#伪装ip
    response = urllib.request.Request(url=url,headers=head);	#封装request对象
    content = urllib.request.urlopen(response)	#打开网页内容
    html = content.read().decode('utf-8')	#解码
    return html	返回

猜你喜欢

转载自blog.csdn.net/jziwjxjd/article/details/106807910