爬虫基础

@人间


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、爬虫是什么?

概念:爬虫是指请求网站并获取数据的自动化程序,又称网页蜘蛛或网络机器,最常用领域是搜索引擎,它的基本流程是明确需求-发送请求-获取数据-解析数据-存储数据。

学习内容:

爬虫的基本使用
1、 创建项目文件
2、 创建爬虫
3、 分析网页标签
4、 爬取需要信息
5、写入text


二、使用步骤

1.创建爬虫项目文件

代码如下(示例):

scrapy start project 项目名

例如: scrapy start xiaoshuo

2.创建爬虫

代码如下(示例):

scrapy genspider 爬虫名称 要爬取的网页

例如: scrapy genspider xiaoshuop book.douban.com

注意: 爬虫名称和项目名称不能一致,创建爬虫的时候需"cd"到项目 目录


总结

提示:单词字母需区分大小写

欢迎使用Scrapy爬虫

你好! 这是你第一次使用 Scrapy 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

查看命令

如果忘记代码命令,直接输入scrapy就会弹出对应的代码提示

在项目目录下的命令提示为:

爬虫会用到docker吗 爬虫使用_爬虫会用到docker吗

在爬虫目录下的命令提示为:

爬虫会用到docker吗 爬虫使用_ide_02

   随后我们进入pycharm

爬虫会用到docker吗 爬虫使用_python_03

1.找到 xiaoshuo.py 文件,我们主要在这个文件里面书写爬取代码。

2.双击打开 xiaoshuo.py 并将文件将想爬取的网页的 url 地址复制粘贴到 ③ 里面。。

爬虫会用到docker吗 爬虫使用_爬虫会用到docker吗_04



①爬虫名字。


②限定爬虫爬取的范围。


③爬取的网页 url 地址 ;这里是有多个页面 用了正则表达式。

3.打开settings.py 文件。

爬虫会用到docker吗 爬虫使用_获取数据_05



①"君子协议"这里直接Flase就行了



②将名为DEFAULT_REQUEST_HEADERS取消掉注释



③去浏览器找到名为 NetWork 下面的 Headrs 再寻找 User-Agent 之后写入DEFAULT_REQUEST_HEADERS。

爬虫会用到docker吗 爬虫使用_ide_06



④写入安全等级过滤语句:LOG_LEVEL = “WARNING” 然后继续往下找到 ITEM_PIPELINES 并取消掉注释。


爬虫会用到docker吗 爬虫使用_ide_07


4.再次进入 xiaoshuo.py 文件,我们开始书写爬取代码。


①实列化 response 并用 .xpath 方法 和 itme{} 字典接收值,先选择大的内容,再用 for 循环遍历。

item = {}
        head_hq = response.xpath('选择标签')

例如

item = {}
        head_hq = response.xpath('//ul//li')

for 循环遍历 itme{} 字典 。

for need_hq in head_hq:
            book_name = need_hq.xpath('.//div[2]//h2//a//text()').get()
            book_from = need_hq.xpath('.//div[2]//div[1]//text()').get()
            book_defen = need_hq.xpath('.//div[2]//span[2]//text()').get()
            book_defen_number = need_hq.xpath('.//div[2]//span[3]//text()').get()
            book_jianjie = need_hq.xpath('.//div[2]//p//text()').get()

re.sub 函数替换空的字符或其他字符 并用 yield 。方法传递 list_item_1 值到 pipelines.py 文件里面。

if book_name != None and book_from !=None:
                str = "\n| "
                item['小说名: '] = re.sub(str, '', book_name)
                item['小说来源: '] = re.sub(str, '', book_from)
                item['小说评分: '] = re.sub(str, '', book_defen)
                item['小说评价人数: '] = re.sub(str, '', book_defen_number)
                item['小说简介:'] = re.sub(str, '', book_jianjie)
                list_item = list(item.values())
                list_item_1 = {}
                list_item_1["0"] = list_item
                # print(list_item)
                # print(list_item_1)
                # print(type(list_item_1))
                yield list_item_1

注意:再传递值的值时候只能传入 字典 。

 

5.进入pipelines 文件,进行将爬取到的数据写入文档操作。

① 注意 list_item_1 变量名要和之前 yield {} 过来的变量名一样。

class XiaoshuoPipeline:
    def process_item(self, list_item_1, spider):
            return list_item_1

join()

x = list_item_1["0"]
        xx = "\t".join(x) + "\n"

③ 进行字符串 with open() 操作和 writ() 操作。

with open("3.text", "r+", encoding="utf-8") as wenjian:
	           print(xx)
	           wenjian.write(xx)

总结

提示:这里对文章进行总结:

谢谢观看