爬虫是在今天大数据时代,数据的主要来源之一,数据是模型训练的先决条件,如何高质量的获取网页上的信息,可以采用爬虫来进行,
前提知识是具有基本的html知识,可以在浏览器的开发者模式中找到标签的位置。
目前常用的有一下几种模块和工具进行爬虫,
正则表达式
xpath
beautifulsoup等
以博客园为例:爬取博客园中的小标题,摘要,发表时间,阅读数,评论数,推荐数等关键信息指标。
第一步在F12开发者模式中找到所找标签对应的位置;
其次根据正则表达式进行查询
import re
import requests
#分为三步
#第一步:返回一个网页内容
#第二部,在网页的内容找到对应标签的内容
#第三步,写执行函数
def one_page(url):
#头部标签
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response= requests.get(url,headers=headers)
if response.status_code == 200:
# print(response.text)
return response.text
else:
return None
def get_parse_onepage(html):
str_text = html.replace("\n", "")
blogs = re.findall(r'<div class="day">(.*?)编辑',str_text)
# blogs = re.findall(r'<div class="day">(.*?)编辑', str_text) ###把握总体
print(blogs)
for blog in blogs:
title = re.findall(r'<span>(.+?)</span>',blog)
date = re.findall(r'<div class="dayTitle">.*?>(\w+?)</a>',blog)
read = re.findall(r'阅读\((\w+)\)',blog)
comment = re.findall(r'评论\((.*?)\)', blog)
recommend = re.findall(r'推荐\((.*?)\)', blog)
print(list(zip(title,date,read,comment,recommend)))
strs = '\t'.join(list(zip(title, date, read, comment, recommend))[0]).replace(' ', '')
with open('博客园数据.txt', 'a', encoding='utf-8') as f:
f.write(strs + '\n')
if __name__ == '__main__':
urls = ['https://www.cnblogs.com/pinard/default.html?page={}'.format(page) for page in range(1,15)]
for url in urls:
html = one_page(url)
# print(html)
# get_parse_onepage(html)
get_parse_onepage(html)
2.根据xpath进行查询: