【发布时间】:2019-11-02 16:28:55
【问题描述】:
我正在尝试一次抓取 html 页面中的所有文本。我知道我会有很多额外的信息,而且不会有条理,但我想看看是否有某种方法可以用一个刮刀一次刮取多个网站。
问题是当我在 Python 中运行 Scrapy 蜘蛛时,我得到了所有空格:即使我指定我只想提取代码中的文本,我也不需要关于页面的额外信息。
我尝试让我的 CSS 选择器更具体,但我总是最终没有任何信息或没有足够的信息
import scrapy
from ..items import WholePageItem
class WholePageSpiderSpider(scrapy.Spider):
name = 'whole_page_spider'
start_urls = ['https://www.justanexample.com']
def parse(self, response):
items = WholePageItem()
mission = response.css('body').css('::text').extract()
items['mission'] = mission
yield items
提取的输出是这样的:
'THE GOOD TEXT I WANT TO EXTRACT',
'\n',
'\n',
'\n',
'window.purechatApi = { l: [], t: [], on: function () { '
'this.l.push(arguments); } }; (function () { var done = false; '
"var script = document.createElement('script'); script.async = "
"true; script.type = 'text/javascript'; script.src = "
"'https://blablabla.com'; "
"document.getElementsByTagName('HEAD').item(0).appendChild(script); "
'script.onreadystatechange = script.onload = function (e) { if '
"(!done && (!this.readyState || this.readyState == 'loaded' || "
"this.readyState == 'complete')) { var w = new PCWidget({c: "
"'3a6f7d8e-a107-4582-b33c-c10aa2b80ac8', f: true }); done = true; "
'} }; })();',
'\n',
我想要得到的只是这一部分: '我想提取的好文本',
我不需要具体,我唯一不想要的是'\n',以及代码中的代码。
我能做什么?谢谢
【问题讨论】:
标签: python html web-scraping css-selectors