scrapy入门例子:获取百度热搜

想要创建一个Scrapy项目来爬取百度的搜索结果,虽然百度的搜索结果通常受到robots.txt的限制并且可能需要处理JavaScript渲染的内容,但我们可以创建一个基础的Scrapy项目来演示如何定义这样的结构和爬虫。请注意,实际爬取百度或其他大型网站时,应遵守其robots.txt规则和使用条款。

  1. 创建Scrapy项目

在命令行中创建一个新的Scrapy项目:

bash 复制代码
scrapy startproject baidu_scraper
  1. 定义Item

baidu_scraper/baidu_scraper/items.py文件中,定义一个BaiduResultItem类:

python 复制代码
import scrapy

class BaiduResultItem(scrapy.Item):
    seq = scrapy.Field()
    title = scrapy.Field()
  1. 编写Spider

baidu_scraper/baidu_scraper/spiders目录下创建一个名为baidu_spider.py的文件,并编写你的Spider:

python 复制代码
import scrapy
from baidu_scraper.items import BaiduResultItem

class BaiduSpider(scrapy.Spider):
    name = 'baidu'
    allowed_domains = ['baidu.com']
    start_urls = ['https://www.baidu.com']

    def parse(self, response):
        # 使用XPath选择热搜的li元素    
        hots = response.xpath('//*[@id="s_xmancard_news_new"]/div/div[1]/div/div/ul/li')    
        # 解析每个搜索结果的序号和标题
        for hot in hots:
            item = BaiduResultItem()
            item['seq'] = hot.xpath('./a/span[0]/text()').get()
            item['title'] = hot.xpath('./a/span[1]/text()').get()
            print(item)
            yield item
  1. 运行Spider

最后,你可以在命令行中运行你的Spider:

bash 复制代码
cd baidu_scraper
scrapy crawl baidu

以上步骤展示了如何用Scrapy创建一个基础的爬虫项目,但请记得在实际应用中要遵循合法合规的原则。

请注意,百度的结果页面通常会动态加载内容,且其结构可能会频繁改变。上面的代码可能无法正确工作,请根据实际情况进行微调。

如果包含动态页面,你可能需要使用如Selenium或Splash等工具,或者使用API(如果有的话)。同时,对于百度这样的大型网站,其robots.txt文件可能禁止爬虫访问某些页面,因此在进行任何爬取活动前,请确保阅读并遵守目标网站的使用条款和robots.txt文件。

相关推荐
安冬的码畜日常9 分钟前
【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)
python·测试工具·django·接口测试·postman·fastapi·api项目
winfredzhang10 分钟前
wxPython实战:打造一个优雅的图片预览工具
chrome·python·预览·剪切板
superman超哥13 分钟前
仓颉GC调优参数深度解析
c语言·开发语言·c++·python·仓颉
Byron Loong17 分钟前
【机器视觉】人物安全距离监测
python·yolo·计算机视觉
Swizard25 分钟前
告别“裸奔”代码:用 Pydantic 让你的 Python 数据固若金汤
python
老歌老听老掉牙34 分钟前
砂轮轮廓的数学建模与可视化分析
python·数学建模·sympy·砂轮
xoliu141 分钟前
Pytorch核心基础入门
人工智能·pytorch·python
一瞬祈望44 分钟前
ResNet50 图像分类完整实战(Notebook Demo + 训练代码)
人工智能·python·神经网络·数据挖掘
其美杰布-富贵-李1 小时前
PyTorch Lightning Callback 指南
人工智能·pytorch·python·回调函数·callback
_codemonster1 小时前
python易混淆知识点(十六)lambda表达式
开发语言·python