网站内容搜索(网络爬虫与信息提取python爬虫爬虫学习中的应用方法)

优采云 发布时间: 2021-11-04 04:05

  网站内容搜索(网络爬虫与信息提取python爬虫爬虫学习中的应用方法)

  内容

  功能 前期准备 先勾选网页搜索框,随便搜索一下数据

  

  我们注意到此时的url是:

  

  可以推断搜索参数是“?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 " "

  解析页面

   # 利用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视频,北京理工大学宋田老师的python爬虫课程,非常清晰透彻。

  Bilibili 链接:python 网络爬虫和信息提取

  在python爬虫学习中,如果大佬看到有什么可以优化的地方请指正

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线