首页 > 其他分享 >【博学谷学习记录】超强总结,用心分享 | 文字爬虫

【博学谷学习记录】超强总结,用心分享 | 文字爬虫

时间:2023-01-21 21:33:08浏览次数:52  
标签:get 博学 爬虫 BeautifulSoup json html nav 超强 requests

【博学谷IT技术支持】
目的: 抓取网站文字

一、使用到的python库

requests库

// 安装

pip install requests

// 导入
import requests

// header
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)


// get使用
r = requests.get('https://api.github.com/events')

// get请求传递参数
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)


// post使用
r = requests.post('url', data = {'key': 'value'})

// json响应内容
r.json()

// 保存文件

with open(filename, 'wb') as fd:
    for chunk in r.iter_content(chunk_size=128):
        fd.write(chunk)

BeautifulSoup

BeautifulSoup是一个可以从HTML或XML文件中提取数据的python库。

// 安装
pip install beautifulsoup4

// 使用

from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))

二、实际操作

首先知道要操作的网站,如:http://demo.mxyhn.xyz:8020/cssthemes6/oyqj-0924-18/index.html

  • 首先我们要获取网页
import requests

def down_html():
  # 下载页面
 
  url = 'http://demo.mxyhn.xyz:8020/cssthemes6/oyqj-0924-18/index.html'
  r = requests.get(url)
  html = r.text
  return html
html = down_html()

以上代码我们就获取到了当前页面

  • 解析页面

解析页面的时候,要有目标,比如说解析导航页的文字

先解析页面

image.png

看到dom结构,知道了导航是在nav的一个节点里,这个节点会有多个li子节点,li子节点里还有a标签,a标签里有要拿的文字。

那么获取这个数据就要一层一层的往下循环

from bs4 import BeautifulSoup

def parse_html_title(html):
  # 解析HTML
  soup = BeautifulSoup(html)
  body = soup.find('body')

  header_node = body.find('nav', class_='navbar')
  nav_nodes = header_node.find('ul', class_='navbar-nav').find_all('li')
  navs = [nav_node.get_text() for nav_node in nav_nodes]

  return {'navList': navs}

datas = parse_html_title(html)

拿到数据后,要将数据保存起来

  • 保存数据
with open('site.json', 'wb') as fout:
  fout.write(json.dumps(datas, ensure_ascii=False).encode('utf-8')+b'\n')
  • json.dumps: 将 Python 对象编码成 JSON 字符串

  • json.loads: 将已编码的 JSON 字符串解码为 Python 对象

  • 执行文件

python site.py

执行后得到json文件

image.png

标签:get,博学,爬虫,BeautifulSoup,json,html,nav,超强,requests
From: https://www.cnblogs.com/neilniu/p/17064049.html

相关文章

  • Python爬虫之58租房+高德地图
    任务分析用Python爬虫在58同城网上爬取房源信息,保存为本地CSV文件申请高德开发者Key,用JSAPI示例编写Index.html,在web上设置工作地点,导入CSV房源信息文件,显示工作地点及......
  • Scrapy爬虫框架快速入门
    安装scrapypipinstall scrapy-ihttps://pypi.douban.com/simple/安装过程可能遇到的问题版本问题导致一些辅助库没有安装好,需要手动下载并安装一个辅助库Twisted......
  • C#爬虫开发小结
    前言2023年以来一直很忙,临近春节,各种琐事更多,但鸽了太久没写文章总是不舒坦,忙中偷闲来记录下最近用C#写爬虫的一些笔记。爬虫一般都是用Python来写,生态丰富,动态语言开发......
  • win10下python3.9的代理报错问题解决(附web3的polygon爬虫源码)
    背景因为工作中经常需要代理访问,而开了代理,request就会报错SSLError,如下:requests.exceptions.SSLError:HTTPSConnectionPool(host='test-admin.xxx.cn',port=443):Ma......
  • 线程池处理爬虫电影票房排行榜
    需求:爬取1996-2023年电影票房排行榜首先,我们先爬取一年的数据,然后通过循环,逐一爬取每一年的数据。通过测试,话费时间32秒,代码如下:importrequestsfromlxmlimportetr......
  • Python爬虫-第四章-2-协程与异步
    协程:    单线程执行多任务执行时,当执行中程序处于I/O期间,异步可以让CPU选择性的切换到其他任务上#DemoDescribe:协程importasyncioimporttime'''协程所针对的......
  • 【Python】爬虫笔记-开源代理池haipproxy使用
    大规模的数据采集需要用到代理池来突破IP封锁。一般代理池的构建是先爬取网上的免费代理,校验后存到数据库中,再提供给其他程序api。github上有很多现成的代理池能拿来用,在......
  • 小满nestjs(第二十章 nestjs 爬虫)
    其实爬虫是一个对计算机综合能力要求比较高的技术活。首先是要对网络协议尤其是 ​​http​​ 协议有基本的了解,能够分析网站的数据请求响应。学会使用一些工具,简单的情......
  • 简单几步快速完成爬虫任务
    #一、引入seleniumfromseleniumimportwebdriverfromtimeimportsleep#fromselenium.webdriver.chrome.optionsimportOptions#importxlrdimportcsvimportos#固定c......
  • 爬虫就应该这样学
    新人如何学习Python爬虫其实也很简单,根据之前学习的步伐,大体上分为四个阶段,这也是我学习爬虫的一些心得,下面我就将我详细学习Python爬虫所制定的学习路线分享给大家吧。......