标签: scrapy

在 Django 中向用户显示 Scrapy 结果

我对 Python 非常陌生,我正在尝试将 Scrapy 与 Django 集成。

这是我想要实现的:

  1. 用户提交要抓取的 URL
  2. 网址被抓取
  3. 抓取的数据在屏幕中返回给用户
  4. 用户分配属性(如有必要),然后将其保存到数据库。

实现这一目标的最佳方法是什么?我玩过 Django Dynamic Sc​​raper,但我认为我最好为此保持对 Scrapy 的控制。

python django scrapy

0
推荐指数
1
解决办法
692
查看次数

Django读取JSON文件

我有一个由scrapy生成的以下格式的json文件:

[
    {
        "area_of_interest": [
            "Pharmaceutical"
        ], 
        "department": [
            "RETAIL PHARMACY: APOTHECARY"
        ], 
        "duties": [
            "EDUCATION:"
        ], 
        "job_function": [
            "Texas Health Presbyterian Hospital Dallas is seeking a Registered Pharmacy Technician to work PRN (as needed) hours in the Retail Pharmacy. Primary hours will be weekday shifts between 9a-5p. There will be occasional 12 hr shifts. The following is required:"
        ], 
        "job_id": [
            "  56345"
        ], 
        "job_type": [
            "PRN"
        ], 
        "location": [
            "Dallas, TX, US"
        ], 
        "location_type": [
            " Texas Health …
Run Code Online (Sandbox Code Playgroud)

python django postgresql json scrapy

0
推荐指数
1
解决办法
2945
查看次数

python 线程的导入是什么?

我想每 120 秒运行一些 python 代码。

我试过这个:

class AppServerSvc :

    def f(self):
        # call f() again in 120 seconds
        spider = FantasySerieaSpider()
        settings = get_project_settings()
        crawler = Crawler(settings)
        crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
        crawler.configure()
        crawler.crawl(spider)
        crawler.start()
        log.start()
        reactor.run() # the script will block here until the spider_closed signal was sent
        threading.Timer(120, f).start()


if __name__ == '__main__':
        AppServerSvc().f();
Run Code Online (Sandbox Code Playgroud)

我得到了threading is not defined错误

这是我的进口:

import pythoncom
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
from twisted.internet import reactor
from scrapy.crawler import Crawler …
Run Code Online (Sandbox Code Playgroud)

python scrapy python-2.7

0
推荐指数
2
解决办法
5285
查看次数

使用 Scrapy 停止将不需要的项目打印到屏幕上的方法

当您从 Python Shell 或命令行运行 Scrapy 程序时,您会在屏幕上打印如下项目:

c:\Python27\webscraper2\webscraper2>scrapy crawl mrcrawl2
2014-08-28 00:12:21+0100 [scrapy] INFO: Scrapy 0.24.4 started (bot: webscraper2)
2014-08-28 00:12:21+0100 [scrapy] INFO: Optional features available: ssl, http11
2014-08-28 00:12:21+0100 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'webscraper2.spiders', 'SPIDER_MODULES': ['webscraper2.spiders'], 'BOT_NAME': 'webscraper2'}
2014-08-28 00:12:21+0100 [scrapy] INFO: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState
2014-08-28 00:12:21+0100 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddle
ware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, ChunkedTransferMiddleware, DownloaderStats
2014-08-28 00:12:21+0100 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, …
Run Code Online (Sandbox Code Playgroud)

scrapy

0
推荐指数
1
解决办法
1340
查看次数

在 Scrapy 中使用相对 XPath 提取文本节点或元素

因此,我对使用 XPath 还比较陌生,而且我在磨练我需要用于我的特定应用程序的确切语法方面遇到了一些困难。我构建的刮板工作得非常好(当我使用不太复杂的路径时,它可以工作)。一旦我尝试更具体地了解我的路径,它就不会返回正确的值。

我试图操纵的文档结构的简化模型是

<table class="rightLinks">
  <tbody>
    <tr>
      <td>
        <a href="http://wwww.example.com">Text That I want to Grab</a>
      </td>
      <td>Some</td>
      <td>Text</td>
    </tr>
    <tr>
      <td>
        <a href="http://wwww.example2.com">Text That I want to Grab</a>
      </td>
      <td>Some</td>
      <td>Text</td>
    </tr>
    <tr>
      <td>
        <a href="http://wwww.example3.com">Text That I want to Grab</a>
      </td>
      <td>Some</td>
      <td>Text</td>
    </tr>
    <tr>
      <td>
        <a href="http://wwww.example4.com">Text That I want to Grab</a>
      </td>
      <td>Some</td>
      <td>Text</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

基本上,我想获取 href 值和带有链接的文本。

这是我的刮板关于这个以及我迄今为止尝试过的部分:

  import scrapy
  from scrapy.selector import HtmlXPathSelector
  from scrapy.http import HtmlResponse

  def parse(self, response):
    for sel …
Run Code Online (Sandbox Code Playgroud)

python xpath scrapy scraper

0
推荐指数
1
解决办法
2684
查看次数

Scrapy 如何检查给定元素中是否存在某个类

<li class="a">category1</li>
<li>subcatergory1</li>
<li>subcatergory2</li>
<li class="a">category2</li>
<li>subcatergory1</li>
<li>subcatergory2</li>
Run Code Online (Sandbox Code Playgroud)

我正在遍历ul包含 2 种的li,一种有a类,一种没有。我想知道是否有一种现有的方法来检查a给定的类是否存在li,而不是提取类值并手动比较它。

for li in ul
    if (li has class:a)
        ....
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激。

python scrapy

0
推荐指数
1
解决办法
4720
查看次数

Scrapy next href 与 rel="next"

在 Scrapy 示例中,我发现了这一行

 next_page = response.css('div.prev-post > a ::attr(href)').extract_first()
Run Code Online (Sandbox Code Playgroud)

现在我不想选择第一个所以我将提取第一个链接,其中有一个 'rel="next"' 。

我试试

next_page = response.css('div.prev-post > a[@rel="next"] ::attr(href)').extract_first()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我怎么能这样做?

谢谢

乔尼

scrapy

0
推荐指数
1
解决办法
1494
查看次数

Scrapy 项目输出为元组而不是列表

无论出于何种原因,所有项目都作为元组返回。不知道我错过了什么。在所有其他蜘蛛和项目中,它只是一个列表(当我使用提取()时)。

{'acne': (None,),
'function': ([u'\u2027Preservative'],),
'function0': u'\u2027Preservative',
'irritant': (None,),
'name': (u'Potassium Sorbate',),
'safety': (u'3',),
'url': 'http://cosdna.com/eng/383bb7435.html'}
Run Code Online (Sandbox Code Playgroud)

这是我的蜘蛛代码。

def parse(self, response):
    inspect_response(response, self)
    a = response.xpath('//table//tr')

    for i in a:
        item = CosdnaExtItem()
        item['name'] = i.xpath('./td/a/text()').extract_first(),
        item['url'] = i.xpath('./td/a/@href').extract_first(),
        item['function'] = i.xpath('.//td[2]/span//text()').extract(),
        item['acne'] = i.xpath('.//td[3]/span//text()').extract_first(),
        item['irritant'] = i.xpath('.//td[4]/span//text()').extract_first(),
        item['safety'] =  i.xpath('.//td[5]/div//text()').extract_first(),

        yield item
Run Code Online (Sandbox Code Playgroud)

scrapy

0
推荐指数
1
解决办法
491
查看次数

ScrapyDeprecationWarning:模块`scrapy.conf`已弃用,请改用`crawler.settings`属性

我正在使用scrapy 1.5并且我正在以编程方式尝试通过python脚本运行scrapy爬虫程序.作为其中的一部分,我需要导入爬虫设置并覆盖其一些参数.

我发现这个import语句可以满足我的需求:

from scrapy.conf import settings
Run Code Online (Sandbox Code Playgroud)

问题是,这有效,但也会产生以下弃用警告:

ScrapyDeprecationWarning: Module `scrapy.conf` is deprecated, use `crawler.settings` attribute instead
Run Code Online (Sandbox Code Playgroud)

所以我猜这是一些旧版本.警告之后,我试图访问scrapy.crawler.settings,但这不存在(或者,经过一些搜索我找不到它).

我该如何解决此警告?

python scrapy web-scraping python-3.x

0
推荐指数
1
解决办法
632
查看次数

字符串格式-法国口音

我在从Wikipedia抓取一些字符串数据时遇到问题。这是我的代码:

import scrapy
import json

class communes_spider(scrapy.Spider):
    name = "city"
    start_urls = ['https://fr.wikipedia.org/wiki/Liste_des_communes_de_Belgique_par_population']

    def parse(self, response):
        for city in response.css('table.wikitable td a::text').getall():
            if city == '2':
                pass
            elif city == '3':
                pass
            else:        
                yield {
                    'cities': city + ', BE'
                }
Run Code Online (Sandbox Code Playgroud)

问题在于字符串是法语,有些城市包含“è”或“é”。当我将它们导出到json文件时,像“ Li \ u00e8ge”这样的单词被导出为“Liège”。如何将那些弦变成法语字母?

python web-crawler scrapy

0
推荐指数
1
解决办法
75
查看次数