使用 Scrapy、python 中的网站地图蜘蛛解析网站地图中不同 url 格式的 url
我正在使用Scrapy中的Sitemap Spider,Python. 站点地图似乎在URL面前具有"//"的格式: //www.example.com/10/20-baby-names //www.example.com/elizabeth/christmas myspider.py from scrapy.contrib.spiders import SitemapSpider from myspider.items import * class MySpider(SitemapSpider): name = "myspider" sitemap_urls = ["http://www.example.com/robots.txt"] def parse(self, response): item = PostI
14 2024-04-22
编程技术问答社区
Xpath 表达式能否访问影子根元素?
目前,我正在抓取文章新闻网站,在获取其主要内容的过程中,我遇到了这样的问题:其中许多人都嵌入了这样的推文: 我使用 解决方案 用不使用Shadow dom API的工具刮擦包含阴影DOMS的一种方法是递归迭代Shadow dom Elements并用其HTML代码替换它们: // Returns HTML of given shadow DOM. const getShadowDomHtml = (shadowRoot) => { let shadowHTML = ''; for (let el of shadowRoot.childNodes) { shadowHTML += el.nodeValue || el.outerHTML; } return shadowHTML; }; // Recursively replaces shadow DOMs with their HTML. const replaceShado
12 2024-04-22
编程技术问答社区
如何限制scrapy的请求对象?
所以我有一个我以为正在泄漏的蜘蛛,事实证明,当我检查telnet console >>> prefs() 现在,我一次又一次地浏览了文档和Google,我找不到一种限制蜘蛛所接受的请求的方法.我想要的是能够告诉它一次拒绝一次请求请求一定的金额进入调度程序.我尝试设置DEPTH_LIMIT,但这只能让它抓住大量,然后在它抓取的回调上进行回调. 这似乎是一件相当简单的事情,我相信人们以前已经遇到了这个问题,所以我知道必须有一种方法来完成它.有什么想法吗? 编辑:这是Memusage_enable = true 的输出 {'downloader/request_bytes': 105716, 'downloader/request_count': 315, 'downloader/request_method_count/GET': 315, 'downloader/response_bytes': 10066538, '
6 2024-04-03
编程技术问答社区
用Python从动态网络数据库中抓取数据
我是Python的新手,目前正在试图弄清楚如何从此网络刮擦数据: https://https:///www.entsoe.eu/db-query/consumption/mhlv-a-specific-country-for-a特定 - 特定 我不确定我是使用砂纸,美丽的套还是硒.需要针对2012 - 2014年每个月和一天的特定国家/地区的数据. 任何帮助都非常感谢. 解决方案 您可以使用 requests (用于维护A Web-scraping会话) + ast.literal_eval() 在JS列表中列出python列表: from ast import literal_eval import re from bs4 import BeautifulSoup import requests url = "https://www.entsoe.eu/db-query/consumption/mhlv-a-specific-country-for
12 2024-03-30
编程技术问答社区
用Python和Selenium刮取一个带有.submit()的Ajax表单
我正在尝试从网页获取链接.该网页使用JavaScript发送请求,然后服务器发送一个直接下载PDF的响应.该新的PDF自动下载到您的浏览器中. 我的第一种方法是使用硒来获取信息: # Path chromedriver & get url path = "/Users/my_user/Desktop/chromedriver" browser = webdriver.Chrome(path) browser.get("https://www.holzwickede.de/amtsblatt/index.php") # Banner click ban = WebDriverWait(browser,15).until(EC.element_to_be_clickable((By.XPATH,"//a[@id='cc_btn_accept_all']"))).click() #Element to get elem = browser.find_element_by_xpath(
6 2024-03-30
编程技术问答社区
我怎样才能通过标题和段落标签在HTML上抓取文本?
我的输入将是没有固定HTML结构的任何Web文档. 我要做的是提取标题中的文本(可能是嵌套)及其以下段落标签(可能是多个),然后作为对输出. 一个简单的HTML示例可以是: House rule Rule 1 A B Rule 2 Rule 2.1 C Rule 2.2 D 在此示例中,我想配对输出: Rule 2.2, D Rule 2.1, C Rule 2, D Rule 2, C House rule, D House rule, C Rule 1, A B .....等等. 我是Python的初学者,我知道网络刮擦是通过砂纸和美丽的套件广泛完成的,并且可能需要与XPATH或代码有关的东西,以识别这种情况下的兄弟姐妹标签.由于如何提取标题的输出对及其以下段落显然是基于标签的相对顺序. 在这种情
12 2024-03-30
编程技术问答社区
为什么这段代码会生成多个文件?我想要一个包含所有条目的文件
我试图与BeautifulSoup和XPath一起工作,并试图使用以下代码,但是现在我每个URL获得1个文件,而不是在我获得所有URL的1个文件 之前获得1个文件 我刚刚从CSV移动以获取URL的列表,还添加了URL和响应的解析.但是当我运行时,现在我会收到很多单个文件,在某些情况下1文件实际上可能实际上可能包含2个刮擦的页面数据. import scrapy import requests from DSG2.items import Dsg2Item from bs4 import BeautifulSoup import time import datetime import csv class DsgSpider(scrapy.Spider): name = "dsg" def start_requests(self): urlLinks = [] with open('dsgLinks.csv','r') as csvf
8 2024-03-30
编程技术问答社区
XPath对屏幕刮擦不起作用
我正在使用零食进行屏幕刮擦项目,并且有XPath的问题. 我试图从下图获得94,218,但是我使用的XPath和CSS不起作用. 它来自此页面:我尝试了多个XPATH和CSS,但一切都返回空白. 这里有一些示例: response.xpath('/html/body/div[1]/div[1]/div[1]/aside/div[1]/div/div/a[2]/text()').extract() response.xpath('//*[@id="sidebar"]/div[1]/div/div/a[2]/text()').extract() response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "fancyd_list", " " ))])'.extract() response.xpath(".//*[@id='sidebar']/div[1]/div/div/a[2]/
16 2024-03-30
编程技术问答社区
如何在网络抓取中获取重定向 URL?
我想要的是请求实际URL后重定向的URL.这是实际的URL https://metric.picodi.net/us/r/19761,当我使用此URL在浏览器上登录时,它将我重定向到像这样的URL https://www.overstock.com/?AID=11557584&PID=9096967&SID=5e479aea42dd4d2c85183aa2&cjevent=2e4090483d7d3c3db27e63d14903c327c7718b978cf0dfa24&entrytrigger=noshow&exittrigger=noshow&fp=F&utm_source=cj&utm_medium=affiliates 我试图这样实现它,但是它给了我相同的URL >>> import requests >>> r = requests.get('https://metric.picodi.net/us/r/19761', allow_redirects=True
16 2024-03-30
编程技术问答社区
如何使用BeautifulSoup4来获取<br>标签前的所有文本?
我正在尝试为我的应用程序刮擦一些数据.我的问题是我需要一些 这是HTML代码: This is a first sentence. This is a second sentence. This is a third sentence. 我希望输出看起来像 这是第一句话. 这是第二句话. 这是第三句话. 可以这样做吗? 解决方案 尝试一下.它应该为您提供所需的输出.只需考虑以下脚本中使用的content变量为您上
10 2024-03-30
编程技术问答社区
Scrappy响应与浏览器响应不同
我试图用砂纸刮擦此页: http://www.barnesandnoble.com/s?dref=4815&sort=SA&startat=7391 和我得到的响应与我在浏览器中看到的响应不同.浏览器响应具有正确的页面,而砂纸响应为: http://www.barnesandnoble.com/s?dref=4815&sort=SA&startat=1 页面.我尝试使用Urllib2,但仍然存在相同的问题.非常感谢任何帮助. 解决方案 我并不真正理解这个问题,但是通常对浏览器的反应和砂纸是由这些响应引起的: 服务器分析您的User-Agent标题,并返回一个专门为移动客户端或机器人制作的页面; 服务器分析了cookie,并且在您第一次访问时会做一些特别的事情; 您正在尝试像浏览器一样通过砂纸提出邮政请求,但是您忘记了一些表单字段或放置了错误的值 等. 没有通用的方法来确定错误的问题,因为这取决于您不知道的服务器逻辑.如果幸运的话,您将
16 2024-03-30
编程技术问答社区
Scrapy/BeautifulSoup 模拟'点击'按钮以加载网站的某个部分
给出一个非常简单的例子,让我们以此网站为例: https://www.cardmarket.com/en/magic/products/booster-boxes/modern-horizo​​ns-2-collector-collector-booster-booster-boost-box- 您可以看到,为了加载更多的列表,您需要按下蓝色"显示更多结果"按钮,几次.简而言之,是否有一种方法可以使用砂纸或美丽的汤"单击"此按钮,以便访问该网站上的所有清单?如果是这样,我该怎么做?如果不是,那么最有效的工具是有能力这样做的,以便让我刮擦该站点?我听说过硒,但也听说它比砂纸/美丽的小组慢,所以宁愿使用这两个或为此使用其他工具 解决方案 我看到该网站使用AJAX加载内容,该网站也称为"动态页面加载",因此您可以做的是使用"资源重"硒,您可以使用请求+BS4将其完成. 要开始,打开网页并等待它完成初始加载,然后按" Ctrl+Shift+I"打开" Inspect" Window
10 2024-03-30
编程技术问答社区
如何使用python刮取谷歌地图
我正在尝试使用Python从Google Maps中刮擦一个地方的评论数量.例如,派克餐厅的着陆餐厅(请参见下面的Google Maps URL)有162份评论.我想在Python中拉这个数字. url: https:///www.google.com/maps? > 我对HTML的文化不是很好,但是从Internet上的一些基本示例中,我编写了以下代码,但是在运行此代码后,我得到的是黑色变量.如果您能让我知道我在这方面做错了什么,这将不胜感激. from urllib.request import urlopen from bs4 import BeautifulSoup quote_page ='https://www.google.com/maps?cid=15423079754231040967' page = urlopen(quote_page) soup = BeautifulSoup(page, 'html.parser') price_box = s
12 2024-03-30
编程技术问答社区
BeautifulSoup和Scrapy爬虫之间的区别?
我想制作一个网站,以显示亚马逊和电子湾产品价格之间的比较. 其中哪一个会更好,为什么?我对 有些熟悉,但对 scrapapy crawler . 并不那么多. 解决方案 scrapy 是网络旋转器或 Web刮擦框架,您将scrapy作为开始爬行的根URL,然后您可以指定有关多少个(您要爬网和获取等URL的数量.这是一个用于网络剪接或爬行的完整框架. 而 beautifulsoup 是解析库,它在从URL中获取内容方面也做得很好,并允许您在没有任何麻烦的情况下解析它们的某些部分.它仅获取您提供的URL的内容,然后停止.除非您用某些标准手动将其放入无限环路中,否则它不会爬行. 用简单的话来说,带有美丽的汤,您可以构建类似于砂纸的东西. 美丽的汤是图书馆,而砂纸是完整框架. source 其他解决方案 我认为两者都很好...我现在正在做一个两者都使用的项目.首先,我使用废除率将所有页面删除,然后使用其管道将其保存在MongoDB集合中,还下载了页面上存在的
10 2024-03-30
编程技术问答社区
刮擦。SSL: CERTIFICATE_VERIFY_FAILED错误 http://en.wikipedia.org
我正在练习"用python的网络刮擦"中的代码,我一直遇到此证书问题: from urllib.request import urlopen from bs4 import BeautifulSoup import re pages = set() def getLinks(pageUrl): global pages html = urlopen("http://en.wikipedia.org"+pageUrl) bsObj = BeautifulSoup(html) for link in bsObj.findAll("a", href=re.compile("^(/wiki/)")): if 'href' in link.attrs: if link.attrs['href'] not in pages: #We have encountered a new pag
6 2024-03-30
编程技术问答社区
如何使用scrapy shell与url和基本的auth凭证?
我想使用scrapy shell并为URL测试响应数据,这需要基本的身份证书.我试图检查Scrapy Shell文档,但在那里找不到. 我尝试了scrapy shell 'http://user:pwd@abc.com',但它不起作用. 有人知道我如何实现吗? 解决方案 如果您只想使用外壳,则可以做类似的事情: $ scrapy shell 和外壳内: >> from w3lib.http import basic_auth_header >> from scrapy import Request >> auth = basic_auth_header(your_user, your_password) >> req = Request(url="http://example.com", headers={'Authorization': auth}) >> fetch(req) as fetch使用当前请求来更新Shell会话. 其他解决方案
12 2024-03-29
编程技术问答社区
请求使用base64数据编码的URLs
我试图请求使用基本64中编码的数据的URL,例如: http://www.somepage.com/es_e/bla_bla#eyJkYXRhIjp7ImNvdW50cnlJZCI6IkVTIiwicmVnaW9uSWQiOiI5MjAiLCJkdXJhdGlvbiI6NywibWluUGVyc29ucyI6MX0sImNvbmZpZyI6eyJwYWdlIjoiMCJ9fQ== 我要做的是构建一个JSON对象,将其编码到base64中,然后将其附加到这样的URL: new_data = {"data": {"countryId": "ES", "regionId": "920", "duration": 7, "minPersons": 1}, "config": {"page": 2}} json_data = json.dumps(new_data) new_url = "http://www.somepage.com/es_es/bla_bla#" + base
10 2024-03-27
编程技术问答社区
如何在Azure Web App上运行Scrapy/Portia
我正在尝试在Microsoft Azure Web应用程序上运行废纸或Portia. 我已经通过创建虚拟环境安装了砂纸: D:\Python27\Scripts\virtualenv.exe D:\home\Python 然后安装了砂纸: D:\home\Python\Scripts\pip install Scrapy 安装似乎可以工作.但是执行蜘蛛返回以下输出: D:\home\Python\Scripts\tutorial>d:\home\python\scripts\scrapy.exe crawl example 2015-09-13 23:09:31 [scrapy] INFO: Scrapy 1.0.3 started (bot: tutorial) 2015-09-13 23:09:31 [scrapy] INFO: Optional features available: ssl, http11 2015-09-13 23:09:31 [s
10 2024-03-24
编程技术问答社区
CrawlerRunner不能抓取带有Crochet的页面
我正在尝试与crawlerrunner()从脚本上启动脚本,以在AWS lambda启动. 我用钩针编织库在Stackoverflow中观看了解决方案,但对我不起作用. 链接: Stackoverflow 1 stackoverflow 2 这是代码: import scrapy from scrapy.crawler import CrawlerRunner from scrapy.utils.project import get_project_settings from scrapy.utils.log import configure_logging # From response in Stackoverflow: https://stackoverflow.com/questions/41495052/scrapy-reactor-not-restartable from crochet import setup setup() class Quo
10 2024-03-22
编程技术问答社区