抓取动态网页(输入关键词爬取某个某个专利网站在关键词下的专利说明)

优采云 发布时间: 2021-10-04 10:28

  抓取动态网页(输入关键词爬取某个某个专利网站在关键词下的专利说明)

  前言:最近除了学习和工作,异性朋友需要爬一个动态网页。输入关键词,抓取网站的专利和关键词下的一些专利说明。以前python urllib2可以直接破解,但是只能破解静态网页,但是对于其他用js生成的动态网页,好像不行(我没试过)。然后在网上找了一些资料,发现scrapy结合selenium包好像可以用。(之所以这么说,是因为主卤还没实现,请先记录一下。)

  #====================== 根据官网的简单介绍,个人理解=============== ==========

  首先,安装两个包:scrapy 和 selenium:

  卤主在ubuntu下,anaconda、pip和easy_intasll都已经安装好了,所以使用pip一步安装(或者easy_install):

  

pip install -U selenium

pip install Scrapy

easy_install -U selenium

easy_install Scrapy

  其次,需要使用scrapy新建项目,在终端运行如下命令新建项目:

  

scrapy startproject tutorial

  然后会自动生成如下形式的文件夹:

  

  图1:新建项目后的文件夹

  再次,开始编写项目:

  一些变量需要在 items.py 文件中定义:

  

import scrapy

class DmozItem(scrapy.Item):

title = scrapy.Field()

link = scrapy.Field()

desc = scrapy.Field()

  在 tutorial/spiders 文件夹下新建一个 dmoz_spider.py 文件:

  

import scrapy

class DmozSpider(scrapy.Spider):

name = "dmoz"

allowed_domains = ["dmoz.org"]

start_urls = [

"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",

"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"

]

def parse(self, response):

filename = response.url.split("/")[-2]

with open(filename, 'wb') as f:

f.write(response.body)

  这个文件中需要定义三个变量,其中之一是name、start_urls和parse。

  最后,在终端最外层文件夹下运行:

  

scrapy crawl dmoz

  dmoz是name的值,是tutorial/spider文件夹下新建的文件中DmozSpider类中的重要变量之一。

  可以开始爬行了。

  #============================================

  朋友们:

  介绍了爬取动态网站的部分内容,并在github上分享了完整的项目代码。(先下载代码,对照代码看文档)

  它的任务是动态捕获页面信息。

  Halo大人为了自己的任务,修改了自己的/etao/lstData.py文件,将在lstData类的lst列表变量中搜索到的关键词传递给spider.py文件,形成一个url,开始爬行。

  分析博主的代码,没有找到爬取的动态页面信息存在的代码。

  在 spider.py 文件中添加您自己的代码:

  

def parse(self, response):

#crawl all display page

for link in self.link_extractor['page_down'].extract_links(response):

yield Request(url = link.url, callback=self.parse)

#browser

self.browser.get(response.url)

time.sleep(5)

# get the data and write it to scrapy items

etaoItem_loader = ItemLoader(item=EtaoItem(), response = response)

url = str(response.url)

etaoItem_loader.add_value('url', url)

etaoItem_loader.add_xpath('title', self._x_query['title'])

etaoItem_loader.add_xpath('name', self._x_query['name'])

etaoItem_loader.add_xpath('price', self._x_query['price'])

#====================================

# for link in self.link_extractor['page_down'].extract_links(response):

# yield Request(url = link.url, callback = self.parse_detail)

for sel in response.xpath('//ul/li'):

title = sel.xpath('a/text()').extract()

link2 = sel.xpath('a/@href').extract()

desc = sel.xpath('text()').extract()

for i in title:

print i,

for j in link2:

print j,"+++++++++++++"

#====================================

yield etaoItem_loader.load_item()

  有些东西可以分析,但还不够。我们需要继续分析返回的动态页面的源代码,更改提取器,选择器(尚未启动)

  

  ) 为了得到想要的结果。selenium 包似乎没用。

  #============================================

  卤大师参考的一些资料:

  刮刮乐官网:

  硒官网:

  刮板选择器:#topics-selectors

  博友博客:

  博友博客:

  博友博客(硒):

  访问问题:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线