$ 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) 我正在使用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将无法正常工作.
最简单的方法是什么?
我的蜘蛛有问题。我使用带有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) 我试图通过脚本以编程方式调用蜘蛛.我无法使用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) 我无法执行以下操作:
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内置的默认模块.也许不吧?
思考?
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相同
请帮帮我
我无法使嵌套选择器工作,如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>>
现在我遇到两个问题:
首先,在元素中,还应该有一个"a" - 节点(如<a href),但它不会出现在打印输出中,只有当我直接提取它,然后它才会显示出来.这只是一个打印错误或"元素选择器"没有持有a节点(没有提取)
当我打印出上面的"网站"时,它应该显示一个带有span-nodes的列表.但是,它没有,它只打印出一个空列表.
我尝试了一些变化的组合(多个到没有斜线和星星(*)在不同的地方),但没有一个让我更接近.
本质上,我只想获得一个嵌套的Selector,它在第二步(循环)中给出了span-node.
有人有任何提示吗?
大家好我想在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()但是它没有提取嵌套元素.
干杯! 勒布
我是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)
提前致谢
我是网络抓取的新手,刚开始使用 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) scrapy ×8
python ×6
web-scraping ×4
html ×1
lxml ×1
macos ×1
parsel ×1
pip ×1
python-2.7 ×1
python-3.x ×1
redirect ×1
scrapinghub ×1
slash ×1
web-crawler ×1
windows-8.1 ×1
xpath ×1