目录
本人0基础菜鸡,寒假趁机狂补python基础,简单的学一点爬虫,欢迎大佬指导!
目录
寒假练习爬虫实现一:最好大学网排名爬取。
首先第一个要完成的函数就是向需要爬取的网站发送一个请求并且得到响应,也就是
def get_one_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55'
}
response = requests.get(url,headers=headers)
if response.status_code == 200:
response.encoding = response.apparent_encoding
return response.text
return None
这一次我们使用requests库来完成获取响应的操作。因为网站一般都会拒绝python的requests库的直接访问,所以我们需要将headers也就是请求头的用户信息修改为mozilla5.0,也就是我们一般浏览器的数据。我们可以先使用浏览器访问url并且用开发者工具查看我们正常访问时的headers信息,复制到我们的代码上即可。
第二个函数就是要对爬取的页面信息进行解析,从中间找到我们需要的信息,所以我们利用正则表达式进行有效信息的匹配,并将所得到的信息进行输出。
def parse_one_page(html):
pattern = re.compile('<a href=".*?" class="name-cn" data-v-b80b4d60>(.*?) </a>',re.S)
items = re.findall(pattern,html)
for item in items:
print(item)
最后我们编辑一下主函数进行调用即可,我们也可以print(html)来看一下爬取的网页的信息,这里我给它注释掉了。
def main():
url = 'https://www.shanghairanking.cn/rankings/bcur/2020'
html = get_one_page(url)
#print(html)
parse_one_page(html)
完整代码如下:
import json
import re
import requests
def get_one_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55'
}
response = requests.get(url,headers=headers)
if response.status_code == 200:
response.encoding = response.apparent_encoding
return response.text
return None
def parse_one_page(html):
pattern = re.compile('<a href=".*?" class="name-cn" data-v-b80b4d60>(.*?) </a>',re.S)
items = re.findall(pattern,html)
for item in items:
print(item)
def main():
url = 'https://www.shanghairanking.cn/rankings/bcur/2020'
html = get_one_page(url)
#print(html)
parse_one_page(html)
main()
部分运行结果如下: