前提条件,已导入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的文件中,这是我第一次写比较长的文章,希望不吝点赞,谢谢各位好心人。