1. 新建项目

① 新建工作文件夹,此处在D盘新建“爬虫练习”

② 新建pycharm项目,记得文件位置选择“爬虫练习”,勾选无需main文件

③ 配置环境,用anacoda方便一点

#创建环境(创建python版本为3.8、名字为env_name的虚拟环境)

conda create -n env_name python=3.8

#列出所有环境

conda env list

conda info -e

conda info --envs

#激活环境

conda activate env_name

#列出改环境下的所有包

conda list

#查询某个包下载没

conda list pkgname

conda list pkgname* (模糊查询)

#安装/卸载包

conda install package_name

conda uninstall package_name

#清理缓存

conda clean -p # 删除没有用的包 --packages

conda clean -t # 删除tar打包 --tarballs

conda clean -y -all # 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)

#退出环境

conda activate

conda deactivate

#删除环境

(将该指定虚拟环境及其中所安装的包都删除)

conda remove --name env_name --all

(只删除虚拟环境中的某个或者某些包)

conda remove --name env_name package_name

#导出环境

(获得环境中的所有配置)

conda env export --name myenv > myenv.yml

(重新还原环境)

conda env create -f myenv.yml

 ④ 安装scrapy

常规pip一般下载不下来,可以采用 ↓ ,或者其他网上教程的安装方法。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy

2. 新建爬虫项目

① 在终端新建项目

scrapy startproject pc

#在当前工作文件夹,新建项目,并命名为pc

cd pc

#进入到pc项目下工作

#创建scrapy爬虫(注意:爬虫名字"域名"不能和项目名称一致)

scrapy genspider + 爬虫名字 + 对应的网址链接去掉http,举例↓

scrapy genspider pachong guba.eastmoney.com

__init__.py #项目的初始化文件,包含项目的初始化信息

items.py #爬虫项目的数据容器文件,主要来定义我们所要获取的数据。

middlewares.py #用来存放各种中间件的文件

pipelines.py #爬虫项目的管道文件,主要用来对items里面定义的数据进行进一步的加工

settings.py #爬虫项目的设置文件

② 在settings里面设置”浏览器标识“

打开想要爬虫的网页——打开开发者界面——选择网络——选择全部——选择第一个链接点击进入——下滑到最后找到User-Agent

同时记得把ROBOTSTXT_OBEY,改为False。

# Crawl responsibly by identifying yourself (and your website) on the user-agent

USER_AGENT = "......具体浏览器请求头"

# Obey robots.txt rules

ROBOTSTXT_OBEY = False

③ 在items里面设置要获取什么

取消注释或者设置其他目标

import scrapy

class AdicrawlerItem(scrapy.Item):

author = scrapy.Field()

theme = scrapy.Field()

# 以上定义了两个变量 分别是作者名、主题。

 3. 编辑爬虫文件

① 找到新建的项目,一般为爬虫名称.py,然后开始编辑

import scrapy

from ..items import PachongItem

#手动新增调用,记得是自己项目的名字加上Item,和items文件里面保持一致

class PcSpider(scrapy.Spider):

name = "pc"

allowed_domains = ["guba.eastmoney.com"]

start_urls = ["https://guba.eastmoney.com"]

# 获取我们想要网站首页的地址,新建爬虫项目后会自动填充

def parse(self, response):

item=PachongItem()

# PachongItem是自己的爬虫项目名称

li_list=response.xpath("//*[@id='mainlist']/div/div/div[3]/ul/li[1]/div/ul/li")

#设置xpath路径,打开我们想要爬取网站首页的开发者界面,找到第一页第一条新闻标题的元素,将鼠标移动至标题文字处,复制xpath路径,删掉li的剩余部分,说明对整页的li下条目进行循环。可以复制第二条进行对比。

# 需要注意外面是“,那么里面还是”的话会导致无效,需要把链接里面原有的”改为‘,代码就不会标红了

# //*[@id="mainlist"]/div/div/div[3]/ul/li[1]/div/ul/li[2]/div/div/div[1]/a

# //*[@id="mainlist"]/div/div/div[3]/ul/li[1]/div/ul/li[1]/div/div/div[1]/a

# //*[@id="mainlist"]/div/div/div[3]/ul/li[1]/div/ul/li

for li in li_list:

item["name"]=li.xpath("./div/div/div[1]/a/text()").get()

# 设置循环的后缀,即li除了序号之外,后面完全相同的部分。并加上/text(),说明获取文本数据

yield item

② 在终端输入运行指令

# 终端运行代码

# 运行爬虫pc文件,并且结果导入(-o),到文件1.csv中

scrapy crawl pc -o 1.csv

# 如果出现报错

# AttributeError: 'AsyncioSelectorReactor' object has no attribute '_handleSignals'

pip install Twisted==22.10.0rc1

有时运行会报错,可以卸载重装Twisted固定版本

4. 其他注意

①目前只是一个针对简单页面爬虫的demo,不能翻页,不能模拟下滑。

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: