前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Scrapy框架爬取Google搜索结果

使用Scrapy框架爬取Google搜索结果

原创
作者头像
Paulette
发布2023-07-08 20:33:30
4450
发布2023-07-08 20:33:30
举报
文章被收录于专栏:小白实例小白实例

一、环境搭建

安装Scrapy框架:

代码语言:javascript
复制
pip install scrapy

创建一个新的Scrapy项目:

代码语言:javascript
复制
scrapy startproject google_search

进入项目目录:

代码语言:javascript
复制
cd google_search

创建一个新的爬虫:

代码语言:javascript
复制
scrapy genspider google_spider www.google.com

编辑爬虫文件:

代码语言:javascript
复制
edit google_search/spiders/google_spider.py

二、爬虫代码

代码语言:javascript
复制
import scrapy
from scrapy.http import Request
from urllib.parse import quote
class GoogleSpider(scrapy.Spider):
   name = 'google_spider'
   allowed_domains = ['www.google.com']
   start_urls = ['https://www.google.com/search?q=so&source=hp&ei=clWpZMHEArze4-EP_tGusA8&iflsig=AD69kcEAAAAAZKljgpV7rjBRGIpmk1S12wEUcYes8Kk-&ved=0ahUKEwjBxa2gjf__AhU87zgGHf6oC_YQ4dUDCAk&uact=5&oq=so&gs_lcp=Cgdnd3Mtd2l6EAMyBwgAEAQQgAQyBwgAEAQQgAQyBwgAEAQQgAQyBwgAEAQQgAQyBwgAEAQQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBwgAEAQQgAQyBwgAEAQQgARQnxdY_lFgllhoBXAAeACAAYEBiAHgApIBAzAuM5gBAKABAbABAA&sclient=gws-wiz']
    def parse(self, response):
        # 提取搜索结果中的链接
        search_results = response.css('div.g')
        for result in search_results:
            title = result.css('h3 a::text').get()
            link = result.css('h3 a::attr(href)').get()
            yield {'title': title, 'link': link}            
        # 提取下一页的链接
        next_page = response.css('a[rel="next"]::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, callback=self.parse)

三、运行爬虫

在项目根目录下运行命令:

代码语言:javascript
复制
scrapy crawl google_spider

查看输出结果,即爬取到的搜索结果。

四、优化建议

为了提高爬虫效率,可以使用多线程或异步IO的方式来处理请求和响应。在Scrapy中,可以使用concurrent_requests参数来设置并发请求数。例如,将并发请求数设置为10:

代码语言:javascript
复制
settings = {
    'CONCURRENT_REQUESTS': 10,
}

为了避免被网站封禁,可以设置User-Agent,模拟浏览器访问。在Scrapy中,可以在项目的settings.py文件中设置User-Agent:

代码语言:javascript
复制
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

为了提高爬虫稳定性,可以使用异常处理来捕获可能出现的错误。例如,当请求失败时,可以记录日志并继续执行后续操作。在Scrapy中,可以使用try-except语句来实现异常处理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境搭建
  • 二、爬虫代码
  • 三、运行爬虫
  • 四、优化建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档