python爬虫进阶篇:用Scrapy框架进行百度搜索并爬取搜索结果进行持久化​

一、前言

接着上篇记录的爬虫应用,这次来试下百度搜索的爬虫应用。百度的很多搜索结果可以为我们的行业挣得信息差,并且统计数据后可以发现规律,根据规律寻找盈利点。所以我们先来试下小demo来尝试爬取百度的搜索结果。

二、需求分析

  • 提供关键词后搜索结果

  • 从搜索结果中提取

  • 标题

  • 链接

  • 描述

  • 来源

  • 存为csv文件或者数据库

三、代码实现

  • 设置爬取的网址(关键词为“python入门到放弃”,百度链接需要将中文转码)
    def start_requests(self):
        urls = [
            # 关键词为python入门到放弃
           "http://www.baidu.com/s?ie=UTF-8&wd=python%E5%85%A5%E9%97%A8%E5%88%B0%E6%94%BE%E5%BC%83"
        ]

        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

  • 解析目标网页信息
    def parse(self, response):
        """
        用css表达式拿到目标网页元素        将其解析后提交到pipelines进行持久化        """
        title_list = response.css("div.result h3 a").extract()
        desc_list = response.css("div.result span[class*='right']").extract()
        source_list = response.css("div[class*='source'] span.c-color-gray::text").extract()

        for index, a in enumerate(title_list):
            title = ''.join(Selector(text=title_list[index]).css(
                "::text").extract())

            href = Selector(text=title_list[index]).css(
                "::attr(href)").extract_first()

            desc = ''.join(Selector(text=desc_list[index]).css(
                "::text").extract())

            source = source_list[index]

            item = BaiduSearchSpiderItem()
            item["title"] = title
            item["href"] = href
            item["desc"] = desc
            item["source"] = source

            yield item

  • settings文件设置
# 机器人协议要设置为否
ROBOTSTXT_OBEY = False
# 指定pipelines中间件,不然不会进入到持久化层
ITEM_PIPELINES = {
   'baidu_search_spider.pipelines.BaiduSearchSpiderPipeline': 300,
}
# 设置默认请求头
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

  • pipeline持久化处理
    def process_item(self, item, spider):
        """
        接收到提交过来的对象后,写入csv文件        """
        filename = f'baidu_search_result.csv'

        with open(filename, 'a+', encoding='utf-8') as f:
            line = item["title"].replace(",", ",") + "," + item["href"] + "," + item["desc"].replace(",", ",") + "," + item[
                "source"] + "\n"
            f.write(line)
        # self.log(f'Saved file {filename}')
        return item


四、拓展

对于百度这种网站来说,这种请求如果访问频繁容易进入安全检测环节,这里也只是初次测试。要想将这种需求落实下来,我们要改进为用selenium去模拟人工操作浏览器进行爬取。接下来会跟着这个思路去实现。

以上就是“python爬虫进阶篇:用Scrapy框架进行百度搜索并爬取搜索结果进行持久化​”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Scrapy框架结合Selenium进行新闻爬取的分析过程如下: 1. 确定目标:确定要爬取的新闻网站,并了解其页面结构、数据位置以及需要的数据类型。 2. 配置Scrapy项目:创建一个Scrapy项目,包括建立项目目录结构、配置爬虫规则、编写爬虫代码等。 3. 配置Selenium:将Selenium集成到Scrapy项目中,通过pip安装Selenium库,并下载相应的浏览器驱动程序(如ChromeDriver)。 4. 编写爬虫代码:在Scrapy项目中的爬虫代码中,创建一个爬虫类,并在该类中定义网站链接的解析方法和数据提取规则。 5. 使用Selenium进行网页交互:在网页解析方法中,使用Selenium启动浏览器,并访问目标网址,以便进行网页的渲染和加载,确保获取到动态生成的数据。 6. 分析网页结构和数据位置:使用Selenium的相关方法定位并提取所需数据的位置,并将其保存到Scrapy的Item对象中。 7. 数据持久化:将提取到的数据保存到数据库或者以其他方式进行持久化,可以使用Scrapy提供的Pipeline功能。 8. 运行爬虫:运行Scrapy项目,爬虫会按照预定的规则进行网页解析,并将数据提取、保存、持久化。 9. 数据分析:根据需求进行数据分析,可以使用Python的数据分析工具(如Pandas、Numpy等)对爬取到的新闻数据进行统计、处理、可视化等操作。 10. 定期维护:定期监控目标网站的变化,更新爬虫代码,以确保爬虫的正常运行和数据的准确性。 通过使用Scrapy框架结合Selenium进行新闻爬取,我们可以实现对需要JavaScript渲染的网站的爬取,提取所需数据并进行后续的数据分析。同时,Scrapy提供了强大的爬虫功能,包括自动处理请求、解析网页、处理数据等,能够提高爬虫的效率和稳定性。而Selenium的集成则可以保证获取到完整的动态生成的数据,使爬虫更具灵活性和适应性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值