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文件。

相关推荐
cm65432027 分钟前
用Python破解简单的替换密码
jvm·数据库·python
wan9yu43 分钟前
为什么你需要给 LLM 的数据"加密"而不是"脱敏"?我写了一个开源工具
python
摇滚侠1 小时前
你是一名 java 程序员,总结定义数组的方式
java·开发语言·python
这个名有人用不1 小时前
解决 uv 虚拟环境使用 pip 命令提示command not found的办法
python·pip·uv·claude code
Oueii2 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
2501_908329852 小时前
使用Python自动收发邮件
jvm·数据库·python
2501_908329852 小时前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
2401_874732533 小时前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
何玺3 小时前
“未来机器人按Token收费”——百度沈抖在博鳌绘出新图景
百度·机器人