爬虫遇到的坑(持续更新)

本文记录了在进行网络爬虫时遇到的各种问题,包括反爬策略、动态加载内容、登录验证以及数据解析等难题,并分享了解决这些问题的技巧和工具,如使用代理、模拟浏览器行为、Scrapy框架和BeautifulSoup库等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.当你在scrapy crawl xxx -o xxx.json 时出现乱码,那么你要在settings里添加以下一句:
FEED_EXPORT_ENCODING = 'utf-8'
如果输出到CSV文件是乱码问题,那么你要用记事本打开,然后在保存为utf-8 格式 因为excl 默认的编码是acii

2.语法    说明
/artical/div[1] 选取所有属于artical 子元素的第一个div元素
/artical/div[last()]    选取所有属于artical子元素的最后一个元素
/artical/div[last()-1]  选取所有属于artical子元素的倒数低2个元素
//div[@lang]    选取所有拥有属性为lang的元素
//div[@lang=”eng”]  选取所有div下lang属性为eng的元素
/div/*  选取所有属于div元素的所有子节点
//* 选取所有元素
//div[@*]   选取所有带属性的title元素
//div/a | //div/p   选取所有div元素的a和p 元素
//span | //ul   选取文档中所有span和ul 的元素
artical/div/pl | //span 选取所有div下的pl和文档中所有span
//a[contains(@href, “image”)]   所有href中包含 image的a元素

CCS选择器语法
语法  说明
*   选择所有节点
#container  选择id为container的节点
.container  选择所有class包含container的节点
div,p   选择所有 div 元素和所有 p 元素
li a    选取所有li 下所有a节点
ul + p  选取ul后面的第一个p元素
div#container > ul  选取id为container的div的第一个ul子元素
ul ~p  选取与ul相邻的所有p元素
a[title]    选取所有有title属性的a元素
a[href=”http://baidu.com”]  选取所有href属性为http://baidu.com的a元素
a[href*=”baidu”]    选取所有href属性值中包含baidu的a元素
a[href^=”http”] 选取所有href属性值中以http开头的a元素
a[href$=”.jpg”]    选取所有href属性值中以.jpg结尾的a元素
input[type=radio]:checked   选择选中的radio的元素
div:not(#container) 选取所有id为非container 的div属性
li:nth-child(3) 选取第三个li元素
li:nth-child(2n)    选取第偶数个li元素
a::attr(href)   选取a标签的href属性
a::text 选取a标签下的文本

提取内容
方法  返回
Selector.xpath()    返回SelectorList对象
Selector.css()  返回SelectorList对象
SelectorList.extract()  返回List对象
SelectorList.extract_first(default) 返回String对象,可以有默认值,类似dict.get(key, default)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值