北京理工大学python网络爬虫与信息提取python爬虫学习方法
优采云 发布时间: 2021-03-28 07:20北京理工大学python网络爬虫与信息提取python爬虫学习方法
内容
功能的准备工作首先,选中Web搜索框,然后随便搜索数据
我们注意到此时的网址是:
可以推断出搜索参数为“?s =”,然后打开F12来查看源代码。您会看到整个数据部分都位于主标记中,例如发布时间,标题,链接等。
开始构建代码,每个模块的功能代码部分
import requests
from bs4 import BeautifulSoup
import bs4
def getHtml(url, header):
try:
r = requests.get(url, headers=header)
r.raise_for_status()
print(r.request.headers)
# r.encoding = r.apparent_encoding # 根据情况是否填写
return r.text
except:
print("爬取失败!")
return " "
def parsePage(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for i in soup.find('main', {'class': 'site-main'}).children:
try:
if isinstance(i, bs4.element.Tag):
psrc = i('div', {'class': 'p-time'})
title = i('h1', {'class': 'entry-title'})
# print(psrc[0].text)
# print(title[0].string)
# print(title[0].a.attrs['href'])
ulist.append([psrc[0].text, title[0].string, title[0].a.attrs['href']])
# ulist.append([1, 1, 1])
except:
print("数据丢失!")
def printlist(ulist):
print("{:10}\t{:10}\t{:8}".format("发布日期", "标题", "链接"))
for i in ulist:
print("{:10}\t{:10}\t{:8}".format(i[0], i[1], i[2]))
def main():
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",
}
worlds = '1'
ulist = []
url = "https://www.hellohuanxuan.top/?s=" + worlds
html = getHtml(url, header)
parsePage(ulist, html)
printlist(ulist)
if __name__ == "__main__":
main()
代码分析getHtml
try:
# 通过requests的get方法获得源代码
r = requests.get(url, headers=header)
# 判断返回状态码是否为200,不为200直接进入异常
r.raise_for_status()
# 打印头部信息看看,可注释掉
print(r.request.headers)
# r.encoding = r.apparent_encoding # 根据情况是否填写,爬我的网站要注释,否则显示中文为乱码
return r.text
except:
print("爬取失败!")
return " "
parsePage
# 利用BeautifulSoup解析html
soup = BeautifulSoup(html, "html.parser")
# for循环查找class为'site-main'的main标签的字标签
for i in soup.find('main', {'class': 'site-main'}).children:
# try except捕捉异常
try:
# isinstance函数在这里判断i是否是bs4库里规定的标签类型
if isinstance(i, bs4.element.Tag):
# 获取class为'p-time'的div标签
psrc = i('div', {'class': 'p-time'})
# 获取class为'entry-title'的h1标签
title = i('h1', {'class': 'entry-title'})
# print(psrc[0].text)
# print(title[0].string)
# print(title[0].a.attrs['href'])
# 将值写进列表
ulist.append([psrc[0].text, title[0].string, title[0].a.attrs['href']])
# ulist.append([1, 1, 1])
except:
print("数据丢失!")
打印列表
# 格式化输出列表
print("{:10}\t{:10}\t{:8}".format("发布日期", "标题", "链接"))
for i in ulist:
print("{:10}\t{:10}\t{:8}".format(i[0], i[1], i[2]))
运行效果
摘要
所有人,请不要使用我的网站进行抓取,学生服务器不能承受太多折腾。 (无奈)
最后,我为MOOC推荐了一个视频,该视频非常清晰,透彻。
Bilibili链接:python Web爬网程序和信息提取
在python采集器学习中,如果大人物看到可以优化的内容,请纠正我