标签: web-scraping

抓取页面 - 一个部分未使用cheerio加载

我正在用cheerio 和meteor 刮一个社交网络。我可以登录,搜索一些信息并在页面上抓取我想要的信息。我正在发出请求并将 html 传递给cheerio,就像用 Meteor.js抓取一样。

问题是,只有当我通过网络浏览器加载页面时,才会出现页面的一部分:

在浏览器中:

<div A>
    <div B>
        <ul (...)>
            <li (...)>...</li>
            ...
            <li (...)>...</li>
        </ul>
    </div> <-- end B -->
    <script id="NAME_1" type="fs/embed+m"></script>
    <script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)

在 console.log(cherio.load(html)) 中:

<div A>
    <script id="NAME_1" type="fs/embed+m"></script>
    <script type="text/javascript">fs.dupeXHR("NAME_1","NAME_2",{"renderControl":"custom","templateId":"NAME_1"});</script>
</div> <-- end A -->
Run Code Online (Sandbox Code Playgroud)

我假设 html 是由cheerio 加载的,而不执行脚本。我对吗?如果是这样,有什么方法可以让cheerio 执行脚本,这样我就可以在放置内容后抓取页面?

我正在使用以下选项发出 http 请求来模拟浏览器请求,所以我认为这不是请求本身的问题(无头浏览器不会让它变得更好)。

Options = function (cookie) {
  this.headers = {
    "Accept": "*/*",
    "Connection": "keep-alive",
    "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) …
Run Code Online (Sandbox Code Playgroud)

html javascript web-scraping meteor cheerio

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

如何使用 VBA 在 Excel 中获取第一页的 Google 搜索结果片段

我有一个包含 1000 个关键字的列表A1:A1000。我想在每个关键字的相应单元格中获取第一页的 Google 搜索结果片段。例如:A1单元格的搜索结果片段应该在B1......*1等等。任何帮助深表感谢。

excel internet-explorer vba google-search web-scraping

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

在Python中存储刮取数据以进行分析的最佳方法

我正在使用python和Beautiful Soup从网上抓取足球运动员统计数据.我将从多个来源进行搜索,每个源都会有各种各样的变量,包括字符串,整数和布尔值.例如球员姓名,职位选秀,职业选秀权(y/n).

最后,我想将这些数据放入数据挖掘工具或分析工具中,以便找到趋势.这需要是可搜索的,当我从不同顺序的新来源中搜索时,我需要能够将数据添加到玩家的信息中.

我应该使用哪些技术来存储数据,这样我才能最好地添加它并在以后进行分析?

python database numpy web-scraping

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

如何使用Beautifulsoup解析网站

我是网络爬虫的新手,我想获取页面的html。但是当我运行程序时,我得到的html为空,控制台显示了javascript

from bs4 import BeautifulSoup
import requests
import urllib

url = "https://linkedin.com/company/1005"

r = requests.get(url)
html_content = r.text
soup = BeautifulSoup(html_content,'html.parser')
print (soup.prettify())
Run Code Online (Sandbox Code Playgroud)

错误

python parsing beautifulsoup linkedin web-scraping

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

如果请求响应为404或505,如何跳过页面

我用python编写了一个刮板。不幸的是,当刮板遇到404505页面时,它将停止工作。如何避免循环中的那些页面以避免此问题?

这是我的代码:

import requests
from bs4 import BeautifulSoup
import time
c = int(40622)
a = 10
for a in range(10):
    url = 'https://example.com/rockery/'+str(c)
    c = int(c) + 1
    print('-------------------------------------------------------------------------------------')
    print(url)
    print(c)
    time.sleep(5)
    response = requests.get(url)
    html = response.content
    soup = BeautifulSoup(html, "html.parser")
    name = soup.find('a', attrs={'class': 'name-hyperlink'})
    name_final = name.text

    name_details = soup.find('div', attrs={'class': 'post-text'})
    name_details_final = name_details.text

    name_taglist = soup.find('div', attrs={'class': 'post-taglist'})
    name_taglist_final = name_taglist.text

    name_accepted_tmp = soup.find('div', attrs={'class': 'accepted-name'})
    name_accepted = name_accepted_tmp.find('div', attrs={'class': 'post-text'}) …
Run Code Online (Sandbox Code Playgroud)

python web-scraping python-3.6

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

网站如何检测机器人?

我正在学习python,我正在抓reddit.不知怎的,reddit已经发现我是一个机器人(我的软件实际上是),但他们怎么知道呢?我们如何欺骗他们认为我们是普通用户.

我找到了实用的解决方案,但我要求更深入的理论理解.

python bots web-scraping web

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

爬行时scrapy中的错误403

这是我编写的用于抓取“blablacar”网站的代码。

# -*- coding: utf-8 -*-
import scrapy


class BlablaSpider(scrapy.Spider):
    name = 'blabla'

    allowed_domains = ['blablacar.in']
    start_urls = ['http://www.blablacar.in/ride-sharing/new-delhi/chandigarh']

    def parse(self, response):
        print(response.text)
Run Code Online (Sandbox Code Playgroud)

运行上述程序时,我收到错误消息

2018-06-11 00:07:05 [scrapy.extensions.telnet] 调试:Telnet 控制台监听 127.0.0.1:6023 2018-06-11 00:07:06 [scrapy.core.engine] 调试:爬行 (403) ) http://www.blablacar.in/robots.txt> (referer: None) 2018-06-11 00:07:06 [scrapy.core.engine] DEBUG: Crawled (403) http://www.blablacar .in/ride-sharing/new-delhi/chandigarh> (referer: None) 2018-06-11 00:07:06 [scrapy.spidermiddlewares.httperror] INFO:忽略响应 <403 http://www.blablacar.in /ride-sharing/new-delhi/chandigarh >: HTTP 状态代码未处理或不允许 2018-06-11 00:07:06 [scrapy.core.engine] INFO: Closing spider (finished)

web-crawler scrapy web-scraping data-extraction python-3.x

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

如何从没有xpath的元素中提取文本

我正试图在食品配送网站上为每个餐馆的网上刮取美元符号评级,但是,没有可用的xpath.

<!-- react-text: 2108 -->
"$$"
<!-- /react-text -->
Run Code Online (Sandbox Code Playgroud)

以上代码是我查看网站时用于美元评级的代码.我尝试过使用上面的直线:

    <i class="icon-bullet--small">·</i>
Run Code Online (Sandbox Code Playgroud)

但是,这会输出期间,因为它不是美元评级.我也尝试过使用:

    cost = ['//li[{}]/a/div[2]/p[2]/!'.format(x) for x in range(1, 999)]
Run Code Online (Sandbox Code Playgroud)

以及在xpath中使用"! - "和"react"和"react-text",但它们都不起作用.有关如何处理此问题的任何建议?

python selenium xpath web-scraping

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

无法让脚本记住其上次刮取的结果

我已经在python中创建了一个脚本,以从网站中获取不同帖子的标题,并且可以完美地捕获它们。

但是,我现在希望此脚本执行的操作是记住上一次抓取的结果,以便当我运行两次时,它不会获取相同的结果。更清楚地说-脚本将在第一次执行时照常解析结果,但在找不到新帖子之前,它将在后续执行中无法获取相同的结果。

使用csv

import csv
import requests
from bs4 import BeautifulSoup

def get_posts(url):   
    response = requests.get(url)
    soup = BeautifulSoup(response.text,"lxml")
    for item in soup.select(".summary .question-hyperlink"):
        yield item.text

if __name__ == '__main__':
    link = '/sf/ask/tagged/web-scraping/'
    with open("output.csv","w",newline="") as f:
        writer = csv.writer(f)
        for item in get_posts(link):
            writer.writerow([item])
            print(item)
Run Code Online (Sandbox Code Playgroud)

使用数据库

import mysql.connector
from bs4 import BeautifulSoup
import requests

url = "/sf/ask/tagged/web-scraping/"

def connect():
    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      passwd = "",
      database="mydatabase"
    )
    return mydb

def create_table(link):
    conn = connect()
    mycursor …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup web-scraping python-3.x

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

我如何从本网站获取这些信息?

我找到了这个链接:https : //search.roblox.com/catalog/json?Category=2&Subcategory=2&SortType=4&Direction=2

原文是:https : //www.roblox.com/catalog/?Category=2&Subcategory=2&SortType=4

我试图用 Python 抓取整个目录中所有商品的价格,但我似乎无法找到这些商品的价格。每当我转到下一页时,该 URL 都不会更改。我试过检查网站本身,但我找不到任何东西。

第一个 URL 以某种方式可抓取,我在论坛上随机找到它。用户是如何在那里获取所有这些文本数据的?

注意:我知道该网站是为儿童设计的,但我通过在那里销售限量版来赚钱。请不要做出严厉的判断。:)

html python web-scraping

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