小编pau*_*rth的帖子

在Windows 8.1(python 2.7)上升级到pip 7.1.10时出错

$ C:\Python27> pip install --upgrade pip

You are using pip version 6.0.8, however version 7.1.0 is available.

You should consider upgrading via the 'pip install --upgrade pip' command.

Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.0-py2.py3-none-any.whl#md5=b108384a762825ec20
345bb9b5b7209f

Using cached pip-7.1.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 6.0.8
    Uninstalling pip-6.0.8:
      Successfully uninstalled pip-6.0.8
Run Code Online (Sandbox Code Playgroud)

先前版本的pip已经消失,但之后我得到了这个例外:

  Rolling back uninstall of pip
  Exception:
  Traceback (most recent call last):


File "c:\python27\lib\site-packages\pip-6.0.8-py2.7.egg\pip\basecommand.py", line 232, in main status = self.run(options, args) 
                               .
                               .
                               .

  AttributeError: 'NoneType' object has no …
Run Code Online (Sandbox Code Playgroud)

pip python-2.7 windows-8.1

5
推荐指数
2
解决办法
3884
查看次数

如何从Scrapy选择器中提取原始html?

我正在使用response.xpath('//*')re_first()提取js数据,然后将其转换为python本机数据.问题是extract/re方法似乎没有提供一种不取消引用html的方法

原始html:

{my_fields:['O'Connor Park'], }
Run Code Online (Sandbox Code Playgroud)

提取输出:

{my_fields:['O'Connor Park'], }
Run Code Online (Sandbox Code Playgroud)

将此输出转换为json将无法正常工作.

最简单的方法是什么?

python scrapy parsel

5
推荐指数
1
解决办法
5708
查看次数

CrawlSpider 与飞溅

我的蜘蛛有问题。我使用带有scrapy的飞溅来获取到由JavaScript生成的“下一页”的链接。从第一页下载信息后,我想从以下页面下载信息,但LinkExtractor功能无法正常工作。但看起来 start_request 函数不起作用。这是代码:

class ReutersBusinessSpider(CrawlSpider):
   name = 'reuters_business'
   allowed_domains = ["reuters.com"]
   start_urls = (
       'http://reuters.com/news/archive/businessNews?view=page&page=1',
   )

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, self.parse, meta={
                'splash': {
                    'endpoint': 'render.html',
                    'args': {'wait': 0.5}
                }
            })
    def use_splash(self, request):
        request.meta['splash'] = {
                'endpoint':'render.html',
                'args':{
                    'wait':0.5,
                    }
                }
        return request

    def process_value(value):
        m = re.search(r'(\?view=page&page=[0-9]&pageSize=10)', value)
        if m:
            return urlparse.urljoin('http://reuters.com/news/archive/businessNews',m.group(1))


    rules = (
        Rule(LinkExtractor(restrict_xpaths='//*[@class="pageNext"]',process_value='process_value'),process_request='use_splash', follow=False),
        Rule(LinkExtractor(restrict_xpaths='//h2/*[contains(@href,"article")]',process_value='process_value'),callback='parse_item'),
    )



    def parse_item(self, response):
        l = ItemLoader(item=PajaczekItem(), response=response)

        l.add_xpath('articlesection','//span[@class="article-section"]/text()', MapCompose(unicode.strip), Join())
        l.add_xpath('date','//span[@class="timestamp"]/text()', MapCompose(parse))
        l.add_value('url',response.url)
        l.add_xpath('articleheadline','//h1[@class="article-headline"]/text()', MapCompose(unicode.title)) …
Run Code Online (Sandbox Code Playgroud)

python slash scrapy

5
推荐指数
1
解决办法
2165
查看次数

scrapy使用CrawlerProcess.crawl()从脚本将custom_settings传递给spider

我试图通过脚本以编程方式调用蜘蛛.我无法使用CrawlerProcess通过构造函数覆盖设置.让我用默认的蜘蛛来说明这一点,用于从官方scrapy站点抓取引号(官方scrapy引用示例蜘蛛的最后一个代码片段).

class QuotesSpider(Spider):

    name = "quotes"

    def __init__(self, somestring, *args, **kwargs):
        super(QuotesSpider, self).__init__(*args, **kwargs)
        self.somestring = somestring
        self.custom_settings = kwargs


    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield Request(url=url, callback=self.parse)

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.css('small.author::text').extract_first(),
                'tags': quote.css('div.tags a.tag::text').extract(),
            }
Run Code Online (Sandbox Code Playgroud)

这是我尝试运行引号蜘蛛的脚本

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from scrapy.settings import Settings

    def main():

    proc = CrawlerProcess(get_project_settings())

    custom_settings_spider = \
    {
        'FEED_URI': 'quotes.csv',
        'LOG_FILE': 'quotes.log' …
Run Code Online (Sandbox Code Playgroud)

scrapy web-scraping python-3.x scrapinghub scrapy-spider

5
推荐指数
1
解决办法
2553
查看次数

来自scrapy.selector导入选择器错误

我无法执行以下操作:

from scrapy.selector import Selector
Run Code Online (Sandbox Code Playgroud)

错误是:

文件"/Desktop/KSL/KSL/spiders/spider.py",第1行,来自scrapy.selector import Selector ImportError:无法导入名称Selector

好像LXML没有安装在我的机器上,但确实如此.另外,我认为这是scrapy内置的默认模块.也许不吧?

思考?

python macos lxml scrapy web-scraping

4
推荐指数
1
解决办法
7556
查看次数

如何在scrapy中进行重定向时获取旧URL?

scrapy版本:0.20

问题:

start_urls=[URL1,URL2,URL3]

def parse(self,response):
    //suppose URL2 is redirected to other URL
    //I need to get current start URL(before redirection) 
Run Code Online (Sandbox Code Playgroud)

我尝试过response.request.url,但它与response.url相同

请帮帮我

redirect scrapy

4
推荐指数
1
解决办法
782
查看次数

Scrapy中的嵌套选择器

我无法使嵌套选择器工作,如Scrapy文档中所述(http://doc.scrapy.org/en/latest/topics/selectors.html)

这是我得到的:

sel = Selector(response)
level3fields = sel.xpath('//ul/something/*')

for element in level3fields:
    site = element.xpath('/span').extract()
Run Code Online (Sandbox Code Playgroud)

当我在循环中打印出"元素"时,我得到了 < Selector xpath='stuff seen above' data="u'< span class="something">text< /span>>

现在我遇到两个问题:

  1. 首先,在元素中,还应该有一个"a" - 节点(如<a href),但它不会出现在打印输出中,只有当我直接提取它,然后它才会显示出来.这只是一个打印错误或"元素选择器"没有持有a节点(没有提取)

  2. 当我打印出上面的"网站"时,它应该显示一个带有span-nodes的列表.但是,它没有,它只打印出一个空列表.

我尝试了一些变化的组合(多个到没有斜线和星星(*)在不同的地方),但没有一个让我更接近.

本质上,我只想获得一个嵌套的Selector,它在第二步(循环)中给出了span-node.

有人有任何提示吗?

python web-crawler scrapy

4
推荐指数
1
解决办法
2740
查看次数

提取文本xpath scrapy

大家好我想在scrapy中使用xpath从html块中提取所有文本

假设我们有一个像这样的块:

<div>
   <p>Blahblah</p>
   <p><a>Bluhbluh</a></p>
   <p><a><span>Bliblih</span></a></p> 
</div>
Run Code Online (Sandbox Code Playgroud)

我想将文本提取为["Blahblah","Bluhbluh","Blihblih"].我希望xpath以递归方式查找div节点中的文本.我听过尝试过://div/p[descendant-or-self::*]/text()但是它没有提取嵌套元素.

干杯! 勒布

html xpath scrapy

4
推荐指数
2
解决办法
3773
查看次数

scrapy:'module'对象没有属性'OP_SINGLE_ECDH_USE'

我是scrapy的新手,我在scrapy中创建了一个示例项目并运行该项目.我收到了一个错误

AttributeError: 'module' object has no attribute 'OP_SINGLE_ECDH_USE'
Run Code Online (Sandbox Code Playgroud)

码:

import scrapy
class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = ["https://www.grocerygateway.com"]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        with open(filename, 'wb') as f:
            f.write(response.body)
Run Code Online (Sandbox Code Playgroud)

提前致谢

python scrapy web-scraping

4
推荐指数
1
解决办法
3996
查看次数

BeautifulSoup 不会返回页面上的所有元素

我是网络抓取的新手,刚开始使用 BeautifulSoup。这是我的问题。

当您使用诸如“define:lucid”之类的搜索查询以这种方式在 Google 中查找某个词时,在大多数情况下,首页会出现一个显示含义和发音的面板。(显示在嵌入图像的左侧)

【谷歌默认词典示例】

在此处输入图片说明

我要自动抓取和收集的内容是含义的文本和存储发音的mp3数据的URL。手动使用 Chrome Inspector,这些很容易在它的“元素”部分找到,例如,检查器(显示在图像的右侧)显示 URL,其中存储了“lucid”(此处)发音的 mp3 数据.

但是,使用requests获取搜索结果的HTML内容并用BeautifulSoup解析,如下面的代码,soup只能获取到面板中的IPA“/?lu?s?d/”等少数内容和属性“形容词”就像下面的结果,我需要的内容都找不到,比如音频元素中的东西。

如果可能,我如何使用 BeautifulSoup 获取信息,否则哪些替代工具适合此任务?

PS 我认为谷歌词典的发音质量比任何其他词典网站的发音质量都要好。所以我想坚持下去。

代码:

import requests
from bs4 import BeautifulSoup

query = "define:lucid"
goog_search = "https://www.google.co.uk/search?q=" + query

r = requests.get(goog_search)

soup = BeautifulSoup(r.text, "html.parser")
print(soup.prettify())
Run Code Online (Sandbox Code Playgroud)

部分soup内容:

           </span>
           <span style="font:smaller 'Doulos SIL','Gentum','TITUS Cyberbit Basic','Junicode','Aborigonal Serif','Arial Unicode MS','Lucida Sans Unicode','Chrysanthi Unicode';padding-left:15px">
            /?lu?s?d/
           </span>
          </div>
         </h3>
         <table style="font-size:14px;width:100%">
          <tr>
           <td>
            <div style="color:#666;padding:5px 0">
             adjective
            </div>
Run Code Online (Sandbox Code Playgroud)

python google-chrome beautifulsoup web-scraping

4
推荐指数
1
解决办法
2938
查看次数