北京理工大学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采集器学习中,如果大人物看到可以优化的内容,请纠正我

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线