beautifulsoup 相关问题

Beautiful Soup是一个用于解析HTML / XML的Python包。此软件包的最新版本是版本4,导入为bs4。

想要从 json 数据中删除图像网址

我,我正在尝试从 json 结构中删除每个产品的图像网址(仅 jpg 扩展名)以及“alt”中可用的名称,如(下面也提到)“属性”>“

回答 1 投票 0

添加商家栏后不比价

我的抓取机器人正常工作,直到我在数据库中添加商家列。 Scraper.py 文件抓取成功商户并正确记录在数据库中,但添加商户后比较机器人不比较...

回答 1 投票 0

使用 Python 从 Indeed 中抓取员工评分

我是网络抓取新手,我需要从 Indeed 抓取员工评级和评论,但我的代码无法运行。你能告诉我我的代码有什么问题吗?非常感谢您的帮助...

回答 1 投票 0

我正在尝试抓取整体产品细节,例如品牌、成分和口味

任何人都可以帮助我使用 beautifulsoup 将风味和品牌详细信息作为关键值对。我是新来的: 期望的输出是 口味 - 青苹果 品牌-Carabau html 看起来像...

回答 3 投票 0

无法从亚马逊抓取产品价格

def scrapedPage(URL, user_agent): 如果(不是 os.environ.get('PYTHONHTTPSVERIFY', '') 和 getattr(ssl, '_create_unverified_context', None)): ssl._create_default_https_context = ssl。

回答 1 投票 0

如何在 Homedepot 中抓取期权组合价格

我正在尝试从 homedepot 抓取产品信息,例如价格、产品详细信息、规格、图像等。我能够抓取所有这些信息,但现在我不知道如何抓取 pr...

回答 1 投票 0

Ebay scraper 制作了一个数据框,但无法将这些数字用于未来的图形

我正在尝试使用 python 为 ebay 制作一个简单的抓取工具,问题是我无法使用我制作的数据框。 我的代码: 导入请求 从 bs4 导入 BeautifulSoup 将 pandas 导入为 pd 从 csv 导入重新...

回答 1 投票 0

从 python 中查找或选择元素以使用 beautifulsoup 进行抓取

我不知道如何选择表中的以下项目 class="table-info" 使用 python 和 beautifulsoup,我想提取: 电话 电子邮件 网站 主要活动(li 元素文本 w...

回答 1 投票 0

使用 Python 和 Beautiful Soup(来自 IMDb)进行 HTML 抓取

例如,我想从此页面获取电影评级并逐行打印评级, 我已经用 BS4 提取了名字和发行年份,但不知道如何处理收视率...... 导入请求 来自 BS4

回答 1 投票 0

如何按页抓取不同位置的元素

我正在抓取一个位于页面不同位置的元素。我当前的代码有些工作,但会随机不返回该值。当我设置卖家=无时,它会使其他ins...

回答 1 投票 0

使用python从div中抓取h3

我想使用Python 3.6从DIV中抓取H3标题 - 从页面: https://player.bfi.org.uk/search/rentals?q=&sort=title&page=1 注意页码变化,递增...

回答 2 投票 0

仅从 BeautifulSoup 中的 URL 中过滤 id 号

我已经到了这样的地步 打印(汤.td.a) 结果是 这里有一些文字 我正在尝试找出如何过滤

回答 2 投票 0

仅从 beautiful soup 中的 url 中过滤 id 号

我是Python新手,但正在尝试构建一个网络抓取工具。 我已经到了这样的地步 打印(汤.td.a) 结果是 一些德克萨斯人...

回答 1 投票 0

BeautifulSoup 异常中循环抓取 HTML 文件

我正在尝试从 HTML 文件的本地文件夹中获取几个变量,但在循环进行到一半时出现异常。例外是 AttributeError: 'NoneType' 对象没有

回答 1 投票 0

从 JavaScript 渲染的网页中抓取图片

我正在尝试从网页中抓取图片。使用JS渲染,源码中的图片链接不完整。这是图片的来源: <question vote="1"> <p>我正在尝试从网页中抓取图片。使用JS渲染,源码中的图片链接不完整。这是图片的来源:</p> <pre><code>&lt;script language=&#34;javascript&#34; type=&#34;text/javascript&#34;&gt; &lt;/script&gt; &lt;div id=&#34;ImagesSection&#34; class=&#34;ImagesSection&#34;&gt; &lt;div id=&#39;HybridImageViewPrimaryImageDiv&#39;&gt; &lt;a href=&#39;/ItemImages/000450/18190933_1_lg.jpeg&#39; class=&#34;MagicZoom&#34; data-options=&#34; zoomMode:off; cssClass: dark-bg; zoomOn: click&#34; title=&#39;Multi-Faced Doll By Cark Bergner.&#39; id=&#34;xxxyyyzzz&#34; &gt;&lt;img id=&#39;fullimage&#39; src=&#39;/ItemImages/000450/18190933_1_med.jpeg&#39; alt=&#39;Multi-Faced Doll By Cark Bergner.&#39; /&gt;&lt;/a&gt; &lt;/div&gt; &lt;div style=&#34;margin-top:15px;width:300px;&#34;&gt; &lt;button class=&#34;cfg-btn&#34; onclick=&#34;MagicZoom.prev(&#39;xxxyyyzzz&#39;);return false;&#34;&gt;Prev&lt;/button&gt; &lt;button class=&#34;cfg-btn&#34; onclick=&#34;MagicZoom.next(&#39;xxxyyyzzz&#39;) ;return false;&#34;&gt;Next&lt;/button&gt; &lt;/div&gt;&lt;div style=&#34;margin-top:15px;&#34; width=&#34;350px&#34; &gt; &lt;a data-zoom-id=&#34;xxxyyyzzz&#34; href=&#34;/ItemImages/000450/18190933_1_lg.jpeg&#34; data-image=&#34;/ItemImages/000450/18190933_1_med.jpeg&#34; &gt; &lt;img src=&#34;/ItemImages/000450/18190933_1_sm.jpeg&#34; height=&#34;60px&#34; /&gt; &lt;/a&gt; &lt;a data-zoom-id=&#34;xxxyyyzzz&#34; href=&#34;/ItemImages/000450/18190933_2_lg.jpeg&#34; data-image=&#34;/ItemImages/000450/18190933_2_med.jpeg&#34; &gt; &lt;img src=&#34;/ItemImages/000450/18190933_2_sm.jpeg&#34; height=&#34;60px&#34; /&gt; &lt;/a&gt; &lt;a data-zoom-id=&#34;xxxyyyzzz&#34; href=&#34;/ItemImages/000450/18190933_3_lg.jpeg&#34; data-image=&#34;/ItemImages/000450/18190933_3_med.jpeg&#34; &gt; &lt;img src=&#34;/ItemImages/000450/18190933_3_sm.jpeg&#34; height=&#34;60px&#34; /&gt; &lt;/a&gt; &lt;a data-zoom-id=&#34;xxxyyyzzz&#34; href=&#34;/ItemImages/000450/18190933_4_lg.jpeg&#34; data-image=&#34;/ItemImages/000450/18190933_4_med.jpeg&#34; &gt; &lt;img src=&#34;/ItemImages/000450/18190933_4_sm.jpeg&#34; height=&#34;60px&#34; /&gt; &lt;/a&gt; &lt;a data-zoom-id=&#34;xxxyyyzzz&#34; href=&#34;/ItemImages/000450/18190933_5_lg.jpeg&#34; data-image=&#34;/ItemImages/000450/18190933_5_med.jpeg&#34; &gt; &lt;img src=&#34;/ItemImages/000450/18190933_5_sm.jpeg&#34; height=&#34;60px&#34; /&gt; &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; </code></pre> <p>我想提取的是以下图像:</p> <pre><code>/ItemImages/000450/18190933_1_sm.jpeg /ItemImages/000450/18190933_2_sm.jpeg /ItemImages/000450/18190933_3_sm.jpeg /ItemImages/000450/18190933_4_sm.jpeg /ItemImages/000450/18190933_5_sm.jpeg </code></pre> <p>这是我的代码:</p> <pre><code>import os import shutil import time import requests from bs4 import BeautifulSoup as bSoup from selenium import webdriver url = &#34;https://auctions.morphyauctions.com/French_Fashion_Doll_with_Unusual_Body_-LOT450029.aspx&#34; driver = webdriver.Chrome(executable_path=&#34;/mypath/&#34;) driver.get(url) iterations = 0 while iterations &lt;10: html = driver.execute_script(&#34;return document.documentElement.outerHTML&#34;) sel_soup = bSoup(html, &#39;html.parser&#39;) print (sel_soup.findAll(&#39;img&#39;)) images = [] for i in sel_soup.findAll(&#39;img&#39;): src = i[&#39;src&#39;] images.append(src) print(images) current_path = os.getcwd() for img in images: try: file_name = os.path.basename(img) img_r = requests.get(img, stream=True) new_path = os.path.join(current_path, &#39;images&#39;, file_name) with open(new_path, &#39;wb&#39;) as output_file: shutil.copyfilobj(img_r.raw, output_file) del img_r except: pass iterations +=1 time.sleep(5) </code></pre> <p>运行此代码的结果是没有保存图像。任何帮助将不胜感激。</p> </question> <answer tick="false" vote="0"> <p>图像的 html 不是由 Javascript 渲染的,所以你不需要 selenium。使用 beautifulsoup 和 <pre><code>re.compile</code></pre> 来匹配以 <pre><code>href</code></pre> 开头的 <pre><code>a</code></pre> 元素中的 <pre><code>/ItemImages/</code></pre>。</p> <p>注意它使用相对 URL,您需要将域附加到图像 URL。</p> <pre><code>base_url = &#39;https://auctions.morphyauctions.com&#39; url = base_url + &#34;/French_Fashion_Doll_with_Unusual_Body_-LOT450029.aspx&#34; html = requests.get(url).text sel_soup = BeautifulSoup(html, &#39;html.parser&#39;) images = [] for a in sel_soup.findAll(&#39;a&#39;, href=re.compile(r&#39;^/ItemImages/&#39;)): ahref = base_url + a[&#39;href&#39;] # wee need to append the domain here images.append(ahref) print(images) current_path = os.getcwd() for img in images: try: file_name = os.path.basename(img) img_r = requests.get(img) new_path = os.path.join(current_path, &#39;images&#39;, file_name) with open(new_path, &#39;wb&#39;) as output_file: output_file.write(img_r.content) except: print(ex) </code></pre> </answer> </body></html>

回答 0 投票 0

在 python3 中使用 BeautifulSoup 提取 html 中的元素时出现问题<script>

我想从下面的 Div 中抓取产品信息,但是当我美化 HTML 时,我无法在 HTML 中找到主 DIV。 <div class="c2p6A5" data-qa-locator="product-item" data-tracking="product-card" 我尝试获取的元素位于以下脚本中。我需要知道如何从下面的脚本中提取数据: <script type="application/ld+json"></script> 我的代码如下: import requests from bs4 import BeautifulSoup url = "https://www.daraz.pk/catalog/?q=dell&_keyori=ss&from=input&spm=a2a0e.searchlist.search.go.57446b5079XMO8" page = requests.get(url) print(page.status_code) print(page.text) soup = BeautifulSoup(page.text, 'lxml') print(soup.prettify()) 只需使用 .find() 或 find_all() 当我这样做时,我看到它实际上是 json 格式,因此可以读取该元素并以这种方式存储所有数据。 import requests from bs4 import BeautifulSoup import json import re url = "https://www.daraz.pk/catalog/?q=dell&_keyori=ss&from=input&spm=a2a0e.searchlist.search.go.57446b5079XMO8" page = requests.get(url) print(page.status_code) print(page.text) soup = BeautifulSoup(page.text, 'html.parser') print(soup.prettify()) alpha = soup.find_all('script',{'type':'application/ld+json'}) jsonObj = json.loads(alpha[1].text) for item in jsonObj['itemListElement']: name = item['name'] price = item['offers']['price'] currency = item['offers']['priceCurrency'] availability = item['offers']['availability'].split('/')[-1] availability = [s for s in re.split("([A-Z][^A-Z]*)", availability) if s] availability = ' '.join(availability) url = item['url'] print('Availability: %s Price: %0.2f %s Name: %s' %(availability,float(price), currency,name)) 输出: Availability: In Stock Price: 82199.00 Rs. Name: DELL INSPIRON 15 5570 - 15.6"HD - CI5 - 8THGEN - 4GB - 1TB HDD - AMD RADEON 530 2GB GDDR5. Availability: In Stock Price: 94599.00 Rs. Name: DELL INSPIRON 15 3576 - 15.6"HD - CI7 - 8THGEN - 4GB - 1TB HRD - AMD Radeon 520 with 2GB GDDR5. Availability: In Stock Price: 106399.00 Rs. Name: DELL INSPIRON 15 5570 - 15.6"HD - CI7 - 8THGEN - 8GB - 2TB HRD - AMD RADEON 530 2GB GDDR5. Availability: In Stock Price: 17000.00 Rs. Name: Dell Latitude E6420 14-inch Notebook 2.50 GHz Intel Core i5 4GB 320GB Laptop Availability: In Stock Price: 20999.00 Rs. Name: Dell Core i5 6410 8GB Ram Wi-Fi Windows 10 Installed ( Refurb ) Availability: In Stock Price: 18500.00 Rs. Name: Core i-5 Laptop Dell 4GB Ram 15.6 " Display Windows 10 DVD+Rw ( Refurb ) Availability: In Stock Price: 8500.00 Rs. Name: Laptop Dell D620 Core 2 Duo 80_2Gb (Used) ... 编辑:查看 2 个 json 结构的差异: jsonObj_0 = json.loads(alpha[0].text) jsonObj_1 = json.loads(alpha[1].text) print(json.dumps(jsonObj_0, indent=4, sort_keys=True)) print(json.dumps(jsonObj_1, indent=4, sort_keys=True))

回答 1 投票 0

在<span>瓮中获取文本:</span>网页抓取

请帮忙,我正在尝试获取骨灰盒的价值。从 333 开始 从这些行(出于安全原因我无法提供链接) 请帮忙,我正在尝试获取骨灰盒的价值。从333开始 来自这些行(出于安全原因我无法提供链接) <body> <div class="receipt-container"> <div class="header"> <div class="three-column"> <div class="single-colum"> <div class="logo-holder"> <img src="/images/logo.png" alt="Logo"> </div> <div class="tans-info"> <div class="barcode-holder"> <span id="CoverPage2_lblBarCode" class="Barcode" style="font-family: 'Free 3 of 9';">*MB270111404AE*</span> </div> <div class="trans-details"> <span class="tans-number">27011140</span> <span class="trans-amount"><strong> رقم الإيصال:</strong> 333297706544052311<br/> <strong> &nbsp;URN :</strong> 333297706544052311<strong> &nbsp; القيمة:</strong> 1284</span> </div> </div> </div> <div class="single-colum"> <div class="trans-entry"> <span class="entry-title"> Establishment Name / اسم المنشأة </span> <span class="entry-detail"> <div class="long-text"> DAYLIGHT </div> <div class="long-text dir-right"> &#x645;&#x637;&#x639;&#x645; &#x62F;&#x64A;&#x644;&#x627;&#x64A;&#x62A; &#x634;.&#x630;.&#x645;.&#x645; </div> </span> </div> <div class="trans-entry"> <span class="entry-title"> Type of Transaction / نوع المعاملة </span> <span class="entry-detail"> <div class="long-text"> Submit Renew </div> <div class="long-text dir-right"> Labour Card Application </span> </div> </div> </div> </body> </html> 我已经使用 beautifulsoup4 在 python 中完成了这行代码 导入请求 从 bs4 导入 BeautifulSoup r = requests.get(url) soup = BeautifulSoup(r.text,"html.parser") desc = soup.find('div', class_="single-colum").find_all('span') 对于描述中的 uname: urnum = uname.find_all('strong') s = urnum print(s[1]) 输出:  瓮: 我想要得到的是这个 输出: 333297706544052311 我也想得到文字 提交续订 劳工卡申请 您可以使用通过文本查找方法以及交易类型。为了得到想要的结果。 transaction_type = soup.find('span', text='Type of Transaction / نوع المعاملة').find_next('div', class_='long-text').text.strip() transaction_detail = soup.find('span', text='Type of Transaction / نوع المعاملة').find_next('div', class_='long-text dir-right').text.strip() 按文本查找是废弃此类项目的关键。如果问题仍然存在,请分享更多详细错误日志。

回答 1 投票 0

如何从网页中抓取特定ID

我需要做一些房地产市场研究,为此需要新房的价格和其他价值。 所以我的想法是访问我获取信息的网站。 转到主-S...

回答 1 投票 0

使用 Beautfiul Soup 提取当前出价金额 - 动态更新值

这是我第一次介绍Python 和BeautifulSoup。我正在尝试从热门拍卖网站 (RealInsight) 上列出的特定房产中获取当前出价金额,但我无法...

回答 3 投票 0

基于 Thesaurus.com 的查询术语进行网页抓取 [已关闭]

当用户输入任何单词时,我试图从 www.thesaurus.com 中抓取所有同义词(见图)。 我已经成功地获取了诸如“名词”和“含义”之类的信息,但是当涉及到...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.