首 先 抓 取 豆 瓣 t o p 250 的 网 页 首先抓取豆瓣top250的网页 首先抓取豆瓣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 返回