小编bar*_*rny的帖子

Python Mechanize HTTP 错误 403:robots.txt 不允许请求

因此,我创建了一个 Django 网站来从网络上抓取新闻网页以获取文章。即使我使用 mechanize,他们仍然告诉我:

HTTP Error 403: request disallowed by robots.txt 
Run Code Online (Sandbox Code Playgroud)

我尝试了一切,看看我的代码(只是要抓取的部分):

br = mechanize.Browser()
page = br.open(web)
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
    #BeautifulSoup 
htmlcontent = page.read()
soup = BeautifulSoup(htmlcontent)
Run Code Online (Sandbox Code Playgroud)

我也尝试在 set_hande_robots(Flase) 等之前使用 de br.open 。它也不起作用。

有什么办法可以通过这个网站吗?

python django robots.txt mechanize beautifulsoup

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

NGINX:上游超时(110:连接超时)

我运行 CentOS 6.5 并且刚刚从 apache 移动到 nginx。我在服务器上运行 wordpress 网站,几乎没有插件使用刮板从其他网站获取信息,确切地说是 2 个刮板,所以我必须每 1 小时执行 2 个 cron 作业。问题是当我搬到 nginx 时,我一次只能运行一个刮刀。当我尝试运行第二个时,它会停止,并且在从上游读取响应标头时,上游超时(110:连接超时)中出现错误

我认为它与允许的 php 进程有关,但找不到正确的设置。如果您能建议我需要添加/更改的内容以使其工作,那就太酷了。

fastcgi_connection_timeout - 对我不起作用,因为我需要同时运行它们。

php wordpress nginx

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

如何在 R 中抓取 JSP 页面?

我想在 R 中抓取以下页面的内容:http : //directoriosancionados.funcionpublica.gob.mx/SanFicTec/jsp/Ficha_Tecnica/SancionadosN.htm

但是,我找不到任何可以帮助我获取信息的 HTML 标记或任何其他工具。

我有兴趣使用“INHABILITADOS Y MULTADOS”部分的信息构建一个数据框,如下图所示:

这是我试图刮的特定选项

选择此选项后,会出现一个包含多个提供程序的菜单,每个提供程序都有一个特定的表格,其中包含我想要回忆的信息。

供应商名单

我终于要爬取的信息

jsp r web-scraping httr rvest

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

将生成 IEnumerable<T> 的 TransformBlock 链接到接收 T 的块

我正在编写一个网络画廊抓取工具,我希望尽可能使用 TPL 数据流并行处理文件。

为了抓取,我首先获取图库主页并解析 HTML 以获取图像页面链接作为列表。然后我转到列表中的每个页面并解析 HTML 以获取图像的链接,然后将其保存到磁盘。

这是我的计划的概要:

var galleryBlock = new TransformBlock<Uri, IEnumerable<Uri>>(async uri =>
{
    // 1. Get the page
    // 2. Parse the page to get the urls of each image page
    return imagePageLinks;
});

var imageBlock = new TransformBlock<Uri, Uri>(async uri =>
{
    // 1. Go to the url and fetch the image page html
    // 2. Parse the html to retrieve the image url
    return imageUri;
});

var downloadBlock = ActionBlock<Uri>(async uri …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing asynchronous tpl-dataflow

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

pandas read_html - 没有找到表

我试图查看是否可以从 WU.com 读取数据表,但由于未找到表而收到类型错误。(这里也是网络抓取的第一次)还有另一个人在这里提出了与 WU 数据表非常相似的 stackoverflow 问题,但解决方案对我来说有点复杂。

import pandas as pd

df_list = pd.read_html('https://www.wunderground.com/history/daily/us/wi/milwaukee/KMKE/date/2013-6-26')

print(df_list)
Run Code Online (Sandbox Code Playgroud)

在密尔沃基的历史数据网页上daily observations,这是我尝试检索到 Pandas 中的 数据表 ( ):在此输入图像描述

任何提示都有帮助,谢谢。

python beautifulsoup web-scraping pandas

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

批处理文件未在任务调度程序中运行 python 脚本

我有一个抓取python 脚本和一个批处理文件,当从 CMD 运行时可以完美运行,但是当我尝试从任务计划程序运行它时没有任何反应。

我知道有很多关于同一问题的问题,但我已经尝试了所有建议的答案,但似乎没有一个可行。

不知道这是否相关,但脚本会打开 Firefox 并抓取一些网站。

已尝试为我正在使用的文件夹和文件添加完全权限。此外,尝试在任务计划程序中设置“无论用户是否登录都运行”、“以最高权限运行”、“启动(可选):添加/批处理/文件/路径”等

批处理文件:

py "C:\python_test\myscript.py"
Run Code Online (Sandbox Code Playgroud)

它应该运行 python 脚本,它打开 Firefox 并抓取一些网站,获取它们的链接并将它们保存在一个 csv 文件中

这是 myscript.py:

import datetime
import time
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import os

file_path = r"C:\General\{0:%Y%m%d}\results{0:%Y%m%d%H%M%S}.csv".format(datetime.datetime.now())
directory = os.path.dirname(file_path)

try:
    os.stat(directory)
except:
    os.mkdir(directory)

from bs4 import BeautifulSoup
 
 
def init_driver():
    caps = DesiredCapabilities.FIREFOX
    caps['marionette'] = True
    driver …
Run Code Online (Sandbox Code Playgroud)

python firefox batch-file taskscheduler

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

如何使用 selenium 在 id 中找到包含某些字符串的元素?

我正在研究一些简单的爬虫来抓取Twitter 上的转发计数。而我坚持这一点:

<span class="ProfileTweet-actionCountForAria" id="profile-tweet-action-retweet-count-aria-123456789123456789">??? 0?</span>
Run Code Online (Sandbox Code Playgroud)

这就是我要收集的目标标签。您可以看到标签的 id 对每个用户都有一些不同的 id 号。所以我试图用 find_elements_by_xpath 像这样收集那些:

retweets = driver.find_elements_by_xpath("//span[@id='profile-tweet-action-retweet-count-area-*'].text")
Run Code Online (Sandbox Code Playgroud)

我认为 * 在 selenium 的某些地方工作,但在该代码中不起作用。

所以,简而言之,我如何找到包含 'profile-tweet-action-retweet-count-area' 的元素?

感谢您的关注。我找不到这样的问题(也许我没有用正确的问题搜索它,嗯),但是我也找到了很好的参考资料或其他链接!

python selenium python-3.x selenium-webdriver

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

元素(按钮)无法滚动到视图中

因此,我尝试打开一个网站,然后导航到某个页面,其中包含我必须从中抓取数据的页面。我能够提供输入,但在到达最终提交按钮之前,我收到错误“selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中”。有任何想法吗 ?

我试图引入等待方法,但它仍然没有给出有用的结果,反而减慢了网站的速度。下面是代码。

from selenium import webdriver
driver=webdriver.Firefox()

ok=driver.find_element_by_css_selector('#dropdownlistContentdrpState > input').send_keys('Chandigarh')
#time.sleep(5)
ok2=driver.find_element_by_css_selector('#dropdownlistContentdrpSchoolManagement > input').send_keys('Pvt. Unaided')
#driver.refresh()
time.sleep(10)
ok3=driver.find_element_by_css_selector('#btnSearch')
ok3.click()
time.sleep(4)
Run Code Online (Sandbox Code Playgroud)

python selenium

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

如何加速scrapy

我需要收集很多(真的很多)数据进行统计,所有必要的信息都在里面<script type="application/ld+json"></script> ,我在它下面写了scrapy解析器(html中的脚本),但是解析很慢(大约每秒3页)。有什么办法可以加快这个过程吗?理想情况下,我希望每秒看到 10 多页

#spider.py:

import scrapy
import json

class Spider(scrapy.Spider):
    name = 'scrape'
    start_urls = [
                 about 10000 urls
                 ]

    def parse(self, response):
        data = json.loads(response.css('script[type="application/ld+json"]::text').extract_first())
        name = data['name']
        image = data['image']
        path = response.css('span[itemprop="name"]::text').extract()
        yield {
            'name': name,
            'image': image,
            'path': path
        }
        return
Run Code Online (Sandbox Code Playgroud)

#settings.py:

USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0"
ROBOTSTXT_OBEY = False

CONCURRENT_REQUESTS = 32

DOWNLOAD_DELAY = 0.33
DEFAULT_REQUEST_HEADERS = {
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
   'Accept-Language': 'en',
}
EXTENSIONS = {
  'scrapy.extensions.telnet.TelnetConsole': …
Run Code Online (Sandbox Code Playgroud)

scrapy

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

如何删除字符串中的空字符串(“”)

我在使用 rvest 进行网页抓取时遇到了一个奇怪的问题。

我刮了以下名称:"Ab­dich­ter/in EFZ"起初看起来很正常。但是,当我将文件写入 csv 时,我发现字母之间有“-”。在 Excel 中,这个词看起来像这样:Ab-­dich-ter/in EFZ

所以我做了一个str_split(x, ""),发现字符串实际上是这样的:

c("A", "b", "­", "d", "i", "c", "h", "­", "t", "e", "r", "/", "i", "n", " ", "E", "F", "Z")
Run Code Online (Sandbox Code Playgroud)

我试图从字符串中取出空字符串,但我没有做到。我试过:

my_string <- str_split(my_string , "")
Run Code Online (Sandbox Code Playgroud)

进而

paste0(my_string[my_string != ""])
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。

因此,我想知道:

  1. 空字符串如何进入该字符串,以及
  2. 怎么弄出来。

编辑:这是网页

这是我获得字符串的方式:

library(rvest)

read_html("https://berufskunde.com/ausbildungsberufe/ausbildung-abdichter.html", encoding = "UTF-8") %>% 
  html_nodes(".section") %>% 
  html_nodes(".text-rot") %>% 
  html_text()
Run Code Online (Sandbox Code Playgroud)

r

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