标签: beautifulsoup

在此 Python 脚本中将 BeautifulSoup 替换为另一个(标准)HTML 解析模块

我用 BeautifulSoup 制作了一个脚本,它运行良好并且非常可读,但我想有一天重新分发它,而 BeautifulSoup 是我想避免的外部依赖项,特别是考虑到 Windows 使用。

这是代码,它从给定的谷歌地图用户获取每个用户地图链接。####### 标记的行是使用 BeautifulSoup 的行:

# coding: utf-8

import urllib, re
from BeautifulSoup import BeautifulSoup as bs

uid = '200931058040775970557'
start = 0
shown = 1

while True:
    url = 'http://maps.google.com/maps/user?uid='+uid+'&ptab=2&start='+str(start)
    source = urllib.urlopen(url).read()
    soup = bs(source)  ####
    maptables = soup.findAll(id=re.compile('^map[0-9]+$'))  #################
    for table in maptables:
        for line in table.findAll('a', 'maptitle'):  ################
            mapid = re.search(uid+'\.([^"]*)', str(line)).group(1)
            mapname = re.search('>(.*)</a>', str(line)).group(1).strip()[:-3]
            print shown, mapid, '\t', mapname
            shown += 1

            urllib.urlretrieve('http://maps.google.com.br/maps/ms?msid=' + uid + '.' + …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup html-parsing

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

通过 BeautifulSoup 从网页下载图像数据 URI

我需要使用 Python 从网站检索图像。但是,该图像不是链接文件的形式,而是 GIF 数据 URI。如何下载该文件并将其存储在 .gif 文件中?

python beautifulsoup python-2.7

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

从网页代码中删除广告

我有广告拦截规则列表(示例
如何将它们应用到网页?我使用 MechanicalSoup(基于 BeautifulSoup)下载网页代码。我想将其保存为 bs 格式,但 etree 也可以。
我尝试使用以下代码,但某些页面存在问题:
ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

beautifulsoup adblock web-scraping python-3.x mechanicalsoup

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

从谷歌搜索中提取结果数

我正在编写一个网络抓取工具,以提取出现在搜索结果页面左上角的谷歌搜索中的搜索结果数量。我写了下面的代码,但我不明白为什么phrase_extract 是 None 。我想提取短语“大约 12,010,000,000 个结果”。我在哪一部分犯了错误?可能是 HTML 解析不正确?

import requests
from bs4 import BeautifulSoup

def pyGoogleSearch(word):   
    address='http://www.google.com/#q='
    newword=address+word
    #webbrowser.open(newword)
    page=requests.get(newword)
    soup = BeautifulSoup(page.content, 'html.parser')
    phrase_extract=soup.find(id="resultStats")
    print(phrase_extract)

pyGoogleSearch('world')
Run Code Online (Sandbox Code Playgroud)

例子

python beautifulsoup web-scraping

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

我想解压抓取的网址

https://www.tokopedia.com/sitemap/product/1.xml.gz ”这是我的网址,该网址包含产品网址的数量,但它已压缩,我不知道如何解压缩该网址以及如何获取来自其中的数据,如何使用 scrapy 或 Beautiful soup 等其他 scrapy 库解压它

python unzip beautifulsoup nsxmlparser xml-parsing

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

Python 请求 ConnectionErrorr [11001] getaddrinfo 失败

我正在使用 beautifulsoup 和 requests 制作股票指数网络爬虫,但我无法弄清楚是什么阻止了连接。

这是我的代码:

from bs4 import BeautifulSoup
import requests


def scraper(link):
    response = requests.get(link, verify=False)
    soup = BeautifulSoup(response.content, 'html.parser')
    company = soup.find(class_="D(ib) ").get_text()
    response.close()
    return company


def main():
    ticker = input("Input stock ticker symbol:")
    site = ("http://finace.yahoo.com/quote/" + ticker.upper().strip())
    data = scraper(site)
    print(data)


main()
Run Code Online (Sandbox Code Playgroud)

这是例外:

C:\Python37-32\python.exe C:\Users\lucas\CS\Final_Project\Stock_Index_Scraper.py
Input stock ticker symbol:tsla
Traceback (most recent call last):
  File "C:\Python37-32\lib\site-packages\urllib3\connection.py", line 157, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "C:\Python37-32\lib\site-packages\urllib3\util\connection.py", line 61, in create_connection
    for res in socket.getaddrinfo(host, port, …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup python-requests

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

如果类不同且包含不同的内容,如何从类中提取内容并将它们按时间顺序添加到列表中?

在抓取代码时,我需要以不同的方式处理 2 个场景。2 个相似的类都包含建筑物的价格,需要按时间顺序添加到 excel 中,因为它们必须与我正在抓取的其他数据相匹配。

我正在抓取数据的属性有 2 个不同的类。一个看起来像这样:

<div class="xl-price rangePrice">
                                375.000 €  
                            </div>
Run Code Online (Sandbox Code Playgroud)

另一个看起来像这样:

<div class="xl-price-promotion rangePrice">
                                <span>from </span> 250.000 € <br><span>to</span> 695.000 €  
                            </div>
Run Code Online (Sandbox Code Playgroud)

我的代码能够提取其中之一,但不能同时提取两者。我需要它做的是浏览搜索结果页面上的所有价格,并将它们附加到列表“价格表”中。

我对平方米、建筑类型等做了同样的处理,并将每个列表项输入到一个 excel 文件中。

出于这个原因,将它们按时间顺序添加到列表中是至关重要的,因为如果它们不是,结果是价格在 excel 中的行位置将与平方米和建筑类型的行位置不匹配。

有谁知道为什么我的代码无法提取这两个类?

这是我的代码和我试图从中提取价格的页面:

获取网站并循环浏览前 4 页:

    for number in range(1, 4):
        listplace = (number - 1) * len(buildinglist1)
        immo_page = requests.get(f'https://www.immoweb.be/en/search/apartment/for-sale/leuven/3000?page={number}',
                                 headers=header)
        soup = Beautiful

Soup(immo_page.content, 'lxml')  # html parser

     pricelist = ['Price']


        for item in soup.findAll('div', attrs={'class': 'xl-price'}):
            # item = item.text.strip().split()
            try:
                for item in …
Run Code Online (Sandbox Code Playgroud)

text-extraction beautifulsoup web-scraping

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

从 Python Beautifulsoup 中抓取表格

我试图从这个网站刮表:https : //stockrow.com/VRTX/financials/income/quarterly

我正在使用 Python Google Colab,我希望将日期作为列。(例如 2020-06-30 等)我用代码来做这样的事情:

source = urllib.request.urlopen('https://stockrow.com/VRTX/financials/income/quarterly').read()
soup = bs.BeautifulSoup(source,'lxml')
table = soup.find_all('table')
Run Code Online (Sandbox Code Playgroud)

但是,我无法拿到桌子。我对抓取有点陌生,所以我查看了其他 Stackoverflow 页面,但无法解决问题。你能帮我么?那将不胜感激。

python beautifulsoup web-scraping google-colaboratory

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

抓取 Javascript 元素,最好不要使用 Selenium

目前,我使用 Selenium 从网站上的表格中提取文本。以下是代码:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


# Using Chrome to access web
browser = webdriver.Chrome(ChromeDriverManager().install())

# Open the website
browser.get('https://launchstudio.bluetooth.com/Listings/Search')
element = browser.find_element_by_id('searchButton').click()

table_text = browser.find_element_by_class_name('table').text

while len(table_text) < 80:
    table_text = browser.find_element_by_class_name('table').text

print(table_text)

browser.close()
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试找到一种方法对请求/美丽汤或任何其他库执行相同的操作,我可以将其安排为 Windows 中的任务,并每隔 x 间隔将结果存储在表中。显然,因为我希望所有这些都在后台发生,然后触发通知等。

我想要的是 - 打开这个网站,点击搜索按钮(或触发相应的 javascript),然后将表格导出为 Dataframe 或其他任何内容。

你能在这里指导我吗?

提前致谢!!

javascript python selenium beautifulsoup python-requests

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

当网站有文本时,Beautiful Soup 返回一个空字符串

在这里考虑这个网站:https : //dlnr.hawaii.gov/dsp/parks/oahu/ahupuaa-o-kahana-state-park/

我正在寻找右侧标题下的内容。这是我的示例代码,它应该返回内容列表但返回空字符串:

import requests as req
from bs4 import BeautifulSoup as bs

r = req.get('https://dlnr.hawaii.gov/dsp/parks/oahu/ahupuaa-o-kahana-state-park/').text
soup = bs(r)

par = soup.find('h3', text= 'Facilities')

for sib in par.next_siblings:
    print(sib)
Run Code Online (Sandbox Code Playgroud)

这将返回:

<ul class="park_icon">
<div class="clearfix"></div>
</ul>
Run Code Online (Sandbox Code Playgroud)

该网站不显示该类的任何 div 元素。此外,未捕获列表项。

python beautifulsoup web-scraping python-requests

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