数据挖掘 之 爬虫实战

bs4的进一步学习

利用单脚本爬取多页书单

掌握Scrapy框架

掌握多页爬取

掌握各个组件的功能

管道存储

课程学完

工具:图片爬取脚本

实战211大学分析

1.单脚本的网页爬取

1.1 获取网页Requests

介绍:Requests库的get()方法 - 知乎 (zhihu.com)

# 获取网页
import requests    
url = "https://www.baidu.com/"
response = requests.get(url)
print(response)  #  反爬虫,则要设置headers
print(response.text)  #所有的网页代码:写入html文件打开就可以显示网页

# 获取响应代码
code = response.status_code

# 响应成功后把网页内容写入文件中
if code == 200:
    with open('./test.html','w',encoding='utf-8') as fp:
        fp.write(res.text)

字符的编解码问题:(137条消息) python中的编码格式_励志的大鹰哥的博客-CSDN博客_python 编码格式 open('./test.html','w',encoding='utf-8')解决了无法正常写入的问题

数据挖掘 之 爬虫实战_第1张图片
# 伪装成浏览器就需要获取User-Agent:搜索栏输入about:version
movie_url = "https://movie.douban.com/"   
header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.24"
}
response = requests.get(movie_url,headers=header)

1.2解析网页re(正则表达式)、BeautifulSoup

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下: BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。

lxml和bs4 - 简书 (jianshu.com)

python爬虫系列(3)- 网页数据解析(bs4、lxml、Json库) - 知乎 (zhihu.com)

from bs4 import BeautifulSoup

暂无

2. Scrapy框架的使用

2.1课程

课程1:黑马程序员Python爬虫基础,快速入门Scrapy爬虫框架_哔哩哔哩_bilibili

课程1:python爬虫零基础入门教程_scrapy网络爬虫_哔哩哔哩_bilibili

2.2先导知识

Scrapy是一个用于 Web 抓取的 Python 框架,它为开发人员提供了一个完整的包

数据挖掘 之 爬虫实战_第2张图片
数据挖掘 之 爬虫实战_第3张图片

2.3初识:基本步骤

  1. 安装Scrapy包:conda install Scrapy

  1. 创建一个scrapy工程:scrapy startproject scrapy001 G:\newpy\Scrapy

  1. 因为具有独特框架和多组件协同工作,不能用Pycharm直接创建scrapy工程

  1. Scrapy命令需要在anaconda Prompt下,或者激活conda环境

  1. 每个脚本的功能(4+1)

  1. ①爬虫组件:spiders(文件夹)

  1. 生成request请求

  1. 获取html源文件

  1. ②数据处理:pipelines.py

获取html源文件、爬虫、筛选……

  1. ③设置:setting.py

一些重要设置

  1. ④模板:items.py

class ScrapyDemo01Item存储着保存一条数据的格式模板(定义字段)

  1. ⑤中间件:middlewares.py

  1. 爬虫中间件【引擎和爬虫组件之间】

  1. 下载器中间件【引擎和DOWNLOADER之间】

  1. 在spiders下新建一个脚本

#coding:utf-8

from scrapy import Request
#地址-》请求
from scrapy.spiders import Spider

class HotSalesSpider(Spider):
    name = "hot"  #爬虫名称,区别于功能
    start_urls = ["https://www.qidian.com/rank/hotsales/page1/"]  #访问的地址

    def parse(self, response):#数据解析,会接收页面数据
        #选择器lass="book-mid-info"
        list_selector = response.xpath("//div[@class='book-mid-info']")
        for one_selector in list_selector:
            #获取小说信息
            name = one_selector.xpath("h2/a/text()").extract()[0]
            author = one_selector.xpath("p[1]/a[1]/text()").extract()[0]
            type1 = one_selector.xpath("p[1]/a[2]/text()").extract()[0]
            type2 = one_selector.xpath("p[1]/a[3]/text()").extract()[0]
            time = one_selector.xpath("p[1]/span/text()").extract()[0]
            #定义字典

            hot_dict = {
                'name': name,
                'author': author,
                'type1': type1,
                'type2':  type2,
                'time': time
            }
            yield hot_dict

(104条消息) python爬虫数据解析xpath解析详细讲解——附有详细案例_愿时间能学会宽恕的博客-CSDN博客_python爬取地址

  1. 执行脚本(爬虫名称需要对应):scrapy crawl hot -o hot.csv

  1. 自动生成hot.csv

3.实战(211大学分析)

3.1略

你可能感兴趣的:(数据挖掘,数据挖掘,爬虫,python)