爬取学校网站的链接
import requests
import re
url = 'http://www.whut.edu.cn/'
r = requests.get(url)
r.encoding = 'utf-8'
text = r.text
links = re.findall('(http.*?)"', text,re.S)
for each in links:
print(each)
sub实现自动翻页
爬取豆瓣Top250
- 根据HTML页面确定相关元素
2.观察url与页面的关系
- 利用sub进行翻页
import requests
import re
from fake_useragent import UserAgent
ua = UserAgent()
kv = {'user-agent': ua.random} # 构造user-agent来伪装爬虫程序
url = 'https://movie.douban.com/top250?start=0&filter='
for i in range(0, 10):
sum_page = i*25
new_url = re.sub('start=d+', 'start=%d'%sum_page, url, re.S ) ####关键代码######
r = requests.get(new_url, headers=kv)
3.完整的提取过程
完整代码:
import requests
import re
from fake_useragent import UserAgent
ua = UserAgent()
kv = {'user-agent': ua.random}
url = 'https://movie.douban.com/top250?start=0&filter='
for i in range(0, 10):
sum_page = i*25
new_url = re.sub('start=d+', 'start=%d'%sum_page, url, re.S )
r = requests.get(new_url, headers=kv)
r.encoding = 'utf-8'
text = r.text
numbers = re.findall('<em class="">(.*?)</em>', text, re.S)
movies = re.findall('<span class="title">(.*?)</span>', text, re.S)
for number in numbers:
index = -1
for movie in movies:
index += 1
if '&' not in movie:
print(f'{number}' + ':', movie)
movies[index] = '&'
break
成果展示
- 中间利用了fake_useragent库来伪造header
有关伪造user-agent - 采取每页处理完再爬取下一页的思路
- 中间爬取电影名字的时候并不是很完美,采用识别关键符号 &
因为爬取的列表实际上是这样的:
并不完全是汉字,但每个非汉字的部分都含有&符号,剔除剩下的子列就是电影的排序