爬蟲——正則表示式爬取豆瓣電影TOP前250的中英文名
阿新 • • 發佈:2020-12-22
正則表示式爬取豆瓣電影TOP前250的中英文名
1、首先要實現網頁的資料的爬取。新建test.py檔案
test.py
1 import requests
2
3 def get_Html_text(url,p):
4 try:
5 h= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg}#User-Agent隨便進入一個網頁F12->Network->選擇xxx?xxx,找到自己的User-Agent複製貼上就好了
6
7 r = requests.get(url,params=p,headers=h)
8 r.raise_for_status()
9 r.encoding=r.apparent_encoding
10 return r.text
11 except:
12 return 'error'
13
14
15
16 if __name__=='__main__':
17 url = 'https://movie.douban.com/top250'
18 for i in range(0,226,25):#實現迴圈爬取
19 p={'start':str(i),'filter':''}
20 html_text=get_Html_text(url,p)
21 if html_text!='error':
22 with open('c.txt','at',encoding='utf-8') as f:#將檔案爬取到的檔案寫入c.txt中
23 f.write(html_text)
24
2、利用正則表示式規則對爬取到的資料進行篩選,當前我們僅需要中文電影名與英文電影名。
test2.py
1 import re#這裡我們需要匯入re
2 with open ('c.txt','rt',encoding='utf-8')as f:
3 html_text=f.read()
4 pat=re.compile(r'<span class="title">(.*?)</span>.*?<span class="title"> / (.*?)</span>',re.S)
5 mats=pat.finditer(html_text)
6 for i in mats:
7 print(i.group(1),i.group(2))
3、執行結果