小编SIM*_*SIM的帖子

如何激活每个项目并解析其信息?

我在使用python抓取网页时遇到了不同类型的问题.单击图像时,图像下会出现有关其"味道"的新信息.我的目标是解析连接到每个图像的所有风味.我的脚本可以解析当前活动图像的风格,但在单击新图像后会中断.我的循环中的一点点抽搐会引导我走向正确的方向.

我尝试过:

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

driver = webdriver.Chrome()
driver.get("https://www.optigura.com/uk/product/gold-standard-100-whey/")
wait = WebDriverWait(driver, 10)

while True:
    items = wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='colright']//ul[@class='opt2']//label")))
    for item in items.find_elements_by_xpath("//div[@class='colright']//ul[@class='opt2']//label"):
        print(item.text)

    try:
        links = driver.find_elements_by_xpath("//span[@class='img']/img")
        for link in links:
            link.click()
    except:
        break

driver.quit() 
Run Code Online (Sandbox Code Playgroud)

下面的图片可能会澄清我无法做到的事情:

在此输入图像描述

python selenium web-scraping python-3.x selenium-webdriver

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

无法从网页上获取少量项目

我在python中编写了一个与selenium结合使用的脚本来解析网页中的一些项目.无论如何我无法让它工作.我所追求的物品(可能)在其中iframe.我试图切换它,但这没有任何影响.我还没有得到任何东西,除非TimeoutException它碰到了我试图切换的线iframe.我怎样才能让它运转起来.提前致谢:

这里是网页链接:URL

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

url = "replace_with_above_url"

driver = webdriver.Chrome()
driver.get(url)
wait = WebDriverWait(driver, 10)

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "tradingview_fe623")))

for item in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".quick .apply-common-tooltip"))):
    print(item.text)

driver.quit()
Run Code Online (Sandbox Code Playgroud)

我追求的物品所在的元素:

<div class="quick">
    <span class="apply-common-tooltip">5</span>
    <span class="apply-common-tooltip">1h</span>
    <span class="apply-common-tooltip selected">1D</span>
    <span class="apply-common-tooltip">1M</span>
    <span class="apply-common-tooltip">1D</span>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我期望的输出(当我尝试使用css选择器时它在本地工作):

5
1h
1D
1M
1D
Run Code Online (Sandbox Code Playgroud)

这是它在网络上的样子:

在此输入图像描述

python selenium web-scraping python-3.x selenium-webdriver

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

如何使用BeautifulSoup搜索标签列表,列表中的一项具有属性?

有谁知道如何在python中使用bs4搜索多个标签,其中之一需要一个属性?

例如,要搜索具有属性的一个标签的所有出现,我知道我可以这样做:

tr_list = soup_object.find_all('tr', id=True)

而且我知道我也可以这样做:

tag_list = soup_object.find_all(['a', 'b', 'p', 'li'])

但是我无法弄清楚如何组合这两个语句,从理论上讲,这将按出现所有这些html标记的顺序为我提供一个列表,每个“ tr”标记都有一个ID。

html片段如下所示:

  <tr id="uniqueID">
   <td nowrap="" valign="baseline" width="8%">
    <b>
     A_time_as_text
    </b>
   </td>
   <td class="storyTitle">
    <a href="a_link.com" target="_new">
     some_text
    </a>
    <b>
     a_headline_as_text
    </b>
    a_number_as_text
   </td>
  </tr>
  <tr>
   <td>
    <br/>
   </td>
   <td class="st-Art">
    <ul>
     <li>
      more_text_text_text
      <strong>
       more_text_text_text
       <font color="228822">
        more_text_text_text
       </font>
      </strong>
      more_text_text_text
     </li>
     <li>
      more_text_text_text
      <ul>
       <li>
        more_text_text_text
       </li>
      </ul>
     </li>
    </ul>
   </td>
  </tr>
  <tr>
  </tr>
Run Code Online (Sandbox Code Playgroud)

预先感谢所有帮助!

html python beautifulsoup web-scraping

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

Scrapy选择器"a :: text"和"a :: text"之间的区别

我创建了一个刮刀来从网页上获取一些产品名称.它运作顺利.我已经使用CSS选择器来完成这项工作.然而,我唯一无法理解的是选择器之间的区别(a::text并且a ::text不要忽略后者之间a::text后者之间的空间).当我运行我的脚本时,无论选择哪个选择器,我都会得到相同的结果.

import requests
from scrapy import Selector

res = requests.get("https://www.kipling.com/uk-en/sale/type/all-sale/?limit=all#")
sel = Selector(res)
for item in sel.css(".product-list-product-wrapper"):
    title = item.css(".product-name a::text").extract_first().strip()
    title_ano = item.css(".product-name a ::text").extract_first().strip()
    print("Name: {}\nName_ano: {}\n".format(title,title_ano))
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,title并且title_ano包含相同的选择,扎在后者的空间.然而,结果总是一样的.

我的问题:两者之间是否存在实质性差异,何时使用前者和后者?

python css-selectors pseudo-element scrapy python-3.x

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

如何从操纵延迟加载方法的网页中获取所有数据?

我已经使用 selenium 在 python 中编写了一些脚本来从 redmart 网站上抓取不同产品的名称和价格。我的爬虫点击一个链接,转到它的目标页面,从那里解析数据。但是,我在使用此爬网程序时面临的问题是,由于网页的加载速度较慢,它从页面中抓取的项目很少。如何从控制延迟加载过程的每个页面获取所有数据?我尝试使用“执行脚本”方法,但我做错了。这是我正在尝试的脚本:

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

driver = webdriver.Chrome()
driver.get("https://redmart.com/bakery")
wait = WebDriverWait(driver, 10)

counter = 0    
while True:

    try:
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "li.image-facets-pill")))
        driver.find_elements_by_css_selector('img.image-facets-pill-image')[counter].click()      
        counter += 1    
    except IndexError:
        break 

    # driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    for elems in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.productPreview"))):
        name = elems.find_element_by_css_selector('h4[title] a').text
        price = elems.find_element_by_css_selector('span[class^="ProductPrice__"]').text
        print(name, price)

    driver.back()
driver.quit() 
Run Code Online (Sandbox Code Playgroud)

python selenium web-scraping python-3.x selenium-webdriver

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

Python - Web Scraping HTML table and printing to CSV

I'm pretty much brand new to Python, but I'm looking to build a webscraping tool that will rip data from an HTML table online and print it into a CSV in the same format.

Here's a sample of the HTML table (it's enormous, so I'm going to provide only a few rows).

<div class="col-xs-12 tab-content">
        <div id="historical-data" class="tab-pane active">
          <div class="tab-header">
            <h2 class="pull-left bottom-margin-2x">Historical data for Bitcoin</h2>

            <div class="clear"></div>

            <div class="row">
              <div class="col-md-12">
                <div class="pull-left">
                  <small>Currency in USD</small>
                </div>
                <div …
Run Code Online (Sandbox Code Playgroud)

html python csv beautifulsoup web-scraping

4
推荐指数
1
解决办法
2万
查看次数

无法从图像中提取单词

我已经编写了一个脚本,python用于pytesseract从图像中提取一个单词.该图像中只有一个单词TOOLS,这就是我所追求的.目前我的下面的脚本给了我错误的输出WIS.我该怎么做才能得到文字?

链接到该图像

这是我的脚本:

import requests, io, pytesseract
from PIL import Image

response = requests.get('http://facweb.cs.depaul.edu/sgrais/images/Type/Tools.jpg')
img = Image.open(io.BytesIO(response.content))
img = img.resize([100,100], Image.ANTIALIAS)
img = img.convert('L')
img = img.point(lambda x: 0 if x < 170 else 255)
imagetext = pytesseract.image_to_string(img)
print(imagetext)
# img.show()
Run Code Online (Sandbox Code Playgroud)

这是我运行上述脚本时修改后的图像的状态:

在此输入图像描述

我输出的输出:

WIS
Run Code Online (Sandbox Code Playgroud)

预期产量:

TOOLS
Run Code Online (Sandbox Code Playgroud)

python web-scraping python-imaging-library python-3.x python-tesseract

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

使用excel公式无法获得大字符串的倒数第二部分

如何使用excel公式拆分由空格分隔的大字符串的倒数第二部分?

具体来说:如果我考虑下面的字符串,那么我希望得到它的第二部分TX.

这是我希望获得倒数第二部分的字符串:

OWNER 915 BROADWAY ST HOUSTON TX 77012-2126

当我尝试时(考虑到字符串在范围("B1")并且我希望得到范围("B1")中的最后一部分:

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)))

我得到字符串最后一部分的结果:

77012-2126

但是,当提到第二部分时,我被卡住了.

预期产量:

TX

任何有关这方面的帮助将受到高度赞赏.

Post Script:我不是在解决任何有关vba的问题.

string excel excel-formula

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

无法获取英文搜索结果

我用 python 编写了一个脚本来执行谷歌搜索并获取结果。目前工作正常。然而,我面临的唯一问题是,我得到的大部分结果都是我的母语,而不是英语,而当我在谷歌浏览器中执行相同的搜索时,我得到的是英语结果。

我如何修改我的脚本以获得所有英文搜索结果?

这是我到目前为止的尝试:

from bs4 import BeautifulSoup
import requests

link = "http://www.google.com/search?q={}"

def fetch_results(query):
    res = requests.get(link.format(query.replace(" ","+")))
    soup = BeautifulSoup(res.text,"lxml")
    for item in soup.select("span"):
        print(item.get_text())

if __name__ == '__main__':
    fetch_results('india')
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup web-scraping python-3.x

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

为什么我的 querySelector 在 Chrome 中有效,但在 VS Code 中无效?

Node 新手,所以这可能是一个对 Node 理解不够好的问题,但基本上我正在尝试使用 Puppeteer 来抓取页面上的标题列表。当我在 Chrome 控制台中运行查询时,我会得到一个标题列表。哇!

\n\n
Array.from(document.querySelectorAll(\'div.description h3.title\')).map(partner => partner.innerText)\n\n(12)\xc2\xa0["Jellyfish", "MightyHive", "Adswerve", "55 | fifty-five", "E-Nor", "LiveArea", "Merkle Inc.", "Publicis Sapient", "Acceleration Precision", "Resolute Digital", "PMG", "Kepler Group"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我使用 Node.js 在 VS Code 中测试它时,我得到一个空数组

\n\n
const browser = await puppeteer.launch();\n  const page = await browser.newPage();\n  const url =\n    "https://marketingplatform.google.com/about/partners/find-a-partner?utm_source=marketingplatform.google.com&utm_medium=et&utm_campaign=marketingplatform.google.com%2Fabout%2F";\n  await page.goto(url);\n\n  const titles = await page.evaluate(() => \n    Array.from(document.querySelectorAll("h3.title"))\n      .map(partner => partner.innerText.trim())\n  )\n\n$ Node google-test.js\n[]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经尝试进一步指定选择器,甚至使用检查“复制选择器”快捷方式进行精确选择,但仍然得到一个空数组。

\n\n

如果我更模糊,例如选择“h2”,我会得到一个结果,但一旦我进一步指定,它对我来说就结束了。是什么赋予了?

\n

javascript node.js web-scraping puppeteer queryselector

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