scrapy入门案例

前提条件,已导入scrapy模块,且正常使用。

1、新建一个scrapy项目

在pycharm的终端窗口输入如下的命令,表示创建了一个叫exercise01的scrapy项目

scrapy startproject exercise01

2、在项目中创建第一个爬虫文件

2.1、 在终端输入如下命令,切换到新建的文件目录下

cd exercise01

2.2 、在spiders子目录中创建一个名main,初始url为www.xxx.com的爬虫文件,在终端输入如下命令

scrapy genspider main www.xxx.com

3、配置文件修改

双击打开exercise01文件目录下的settings.py文件,
3.1、打开并修改USER_AGENT的注释

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = "'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.197.400 QQBrowser/11.6.5265.400'"

3.2、将ROBOTSTXT_OBEY的True改为False

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

3.3、新添加一行代码,以避免输出全部日志,仅当程序出错时,输出错误日志

LOG_LEVEL = 'ERROR'

4、编写程序代码

main.py代码如下,是爬取水浒传正文的代码

import scrapy
import requests
from bs4 import BeautifulSoup
class MainSpider(scrapy.Spider):
    name = "main"
    # allowed_domains = ["www.baidu.com"]
    start_urls = ["https://shuihu.5000yan.com"]

    def parse(self, response):
        all_data = []
        title_list = response.xpath('/html/body/div[2]/div[1]/main/div/ul/li/a')
        for title in title_list:
            src = title.xpath('./@href')[0].extract()
            chapter = title.xpath('./text()')[0].extract()
            # 向详情页发送url请求
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.197.400 QQBrowser/11.6.5265.400'
            }
            detail = requests.get(url=src, headers=headers)
            # 对爬取的内容进行再次编码
            detail.encoding = 'utf-8'
            detail_text = detail.text
            detail_soup = BeautifulSoup(detail_text, 'lxml')
            content = detail_soup.find('div', class_='grap').text
            dic = {
                'title': chapter,
                'content': content
            }
            all_data.append(dic)
        return all_data

5、总结

最后,爬到的水浒传全文保存在shuihuzhuan.csv的文件中,这是我第一次写比较长的文章,希望不吝点赞,谢谢各位好心人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Double Handsome

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值