Beautiful Soup是一个用于解析HTML / XML的Python包。此软件包的最新版本是版本4,导入为bs4。
Python 中的 BeautifulSoup find() 以意想不到的方式处理元组
我正在练习爬行网络,昨天我得到了一个意想不到的正确结果,我认为它不应该起作用。 我用 soup.find('id'=i) 来查找属性键 i,我虽然 i 必须是字符串,...
我尝试使用以下代码解析本地 html 文档 - 导入操作系统、系统 从 bs4 导入 BeautifulSoup 路径 = os.path.abspath(os.path.dirname(sys.argv[0])) fnHTML = os.path.join(路径, "...
使用 Beautiful Soup 解析 Grobid .tei.xml 输出
我正在尝试使用 Beautiful Soup 从使用 Grobid 生成的 .tei.xml 文件中提取元素。 我可以使用以下方法获取标题: 标题 = soup.findAll('标题') 正确的语法是什么...
如何抓取像Beauhurst和Pitchbook这样的数据库平台?
使用Python 3.12; pycharm。 一些背景信息:我的 Excel 表格上有不到 800 家所谓的英国私募股权公司,其中很多都处于不活跃/解散等状态。我必须抓住一些关键...
我正在从html文件中提取数据,它是表格格式,所以我编写了这行代码,将所有表格转换为带有pandas的数据框。 dfs = pd.read_html("synced_contacts.html"...
使用 BeautifulSoup 将 HTML 中编码的 JSON 转换为 JSON
我知道这里也有人问过类似的问题,但我仍在努力寻找解决方案。我可以使用 Beautiful Soup 解析 bandintown 网站上的原始 HTML,但我的最终目标是
如何在列表理解中使用 if/else 以及遍历 html 页面的漂亮汤逻辑
我正在尝试学习一个 youtube 练习,该练习将从 wiki 页面 https://en.wikipedia.org/wiki/Toy_Story_3 中抓取特定的 html 块,我对 in 中的键值对数据感兴趣...
BeautifulSoup 获取列表的 href - 需要简化脚本 - 替换多处理
我有以下汤: 下一个 ... 我想从中提取 href“some_url” 这个我...
学习时一直坚持使用 BeautifulSoup 进行刮擦。需要一些指点
我开始使用 BeautifulSoup 学习屏幕抓取。首先,我采用了以下格式的维基百科文章 < 我开始使用 BeautifulSoup 学习屏幕抓取。首先,我采用了以下格式的维基百科文章 <table class="wikitable sortable jquery-tablesorter"> <caption></caption> <thead> <tr> <th colspan="2" style="width: 6%;" class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Opening</th> <th style="width: 20%;" class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Title</th> <th style="width: 10%;" class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Director</th> <th style="width: 45%;" class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Cast</th> <th style="width: 30%;" class="headerSort" tabindex="0" role="columnheader button" title="Sort ascending">Production company</th> <th class="unsortable" style="width: 1%;"><abbr title="Reference(s)">Ref.</abbr></th> </tr> </thead> <tbody> <tr> <td rowspan="3" style="text-align: center; background: #77bc83;"> <b> O<br /> C<br /> T </b> </td> <td rowspan="1" style="text-align: center; background: #77bc83;"><b>11</b></td> <td style="text-align: center;"> <i><a href="/wiki/Viswam_(film)" title="Viswam (film)">Viswam</a></i> </td> <td>Sreenu Vaitla</td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Gopichand_(actor)" title="Gopichand (actor)">Gopichand</a></li> <li><a href="/wiki/Kavya_Thapar" title="Kavya Thapar">Kavya Thapar</a></li> <li><a href="/wiki/Vennela_Kishore" title="Vennela Kishore">Vennela Kishore</a></li> <li><a href="/wiki/Sunil" title="Sunil">Sunil</a></li> <li><a href="/wiki/Naresh" title="Naresh">Naresh</a></li> </ul> </div> </td> <td> Chitralayam Studios<br /> People Media Factory </td> <td style="text-align: center;"> <sup id="cite_ref-180" class="reference"> <a href="#cite_note-180"><span class="cite-bracket">[</span>178<span class="cite-bracket">]</span></a> </sup> </td> </tr> <tr> <td rowspan="2" style="text-align: center; background: #77bc83;"><b>31</b></td> <td style="text-align: center;"> <i><a href="/wiki/Lucky_Baskhar" title="Lucky Baskhar">Lucky Baskhar</a></i> </td> <td><a href="/wiki/Venky_Atluri" title="Venky Atluri">Venky Atluri</a></td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Dulquer_Salmaan" title="Dulquer Salmaan">Dulquer Salmaan</a></li> <li><a href="/wiki/Meenakshi_Chaudhary" title="Meenakshi Chaudhary">Meenakshi Chaudhary</a></li> </ul> </div> </td> <td><a href="/wiki/S._Radha_Krishna" title="S. Radha Krishna">Sithara Entertainments</a></td> <td style="text-align: center;"> <sup id="cite_ref-181" class="reference"> <a href="#cite_note-181"><span class="cite-bracket">[</span>179<span class="cite-bracket">]</span></a> </sup> </td> </tr> <tr> <td style="text-align: center;"> <i><a href="/wiki/Mechanic_Rocky" title="Mechanic Rocky">Mechanic Rocky</a></i> </td> <td>Ravi Teja Mullapudi</td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Vishwak_Sen" title="Vishwak Sen">Vishwak Sen</a></li> <li><a href="/wiki/Meenakshi_Chaudhary" title="Meenakshi Chaudhary">Meenakshi Chaudhary</a></li> </ul> </div> </td> <td>SRT Entertainments</td> <td style="text-align: center;"> <sup id="cite_ref-182" class="reference"> <a href="#cite_note-182"><span class="cite-bracket">[</span>180<span class="cite-bracket">]</span></a> </sup> </td> </tr> <tr> <td style="text-align: center; background: #77ea83;"> <b> N<br /> O<br /> V </b> </td> <td style="text-align: center; background: #77ea83;"><b>9</b></td> <td style="text-align: center;"> <i><a href="/wiki/Telusu_Kada" title="Telusu Kada">Telusu Kada</a></i> </td> <td><a href="/wiki/Neeraja_Kona" title="Neeraja Kona">Neeraja Kona</a></td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Siddhu_Jonnalagadda" title="Siddhu Jonnalagadda">Siddhu Jonnalagadda</a></li> <li><a href="/wiki/Raashii_Khanna" title="Raashii Khanna">Raashii Khanna</a></li> <li><a href="/wiki/Srinidhi_Shetty" title="Srinidhi Shetty">Srinidhi Shetty</a></li> </ul> </div> </td> <td>People Media Factory</td> <td style="text-align: center;"> <sup id="cite_ref-183" class="reference"> <a href="#cite_note-183"><span class="cite-bracket">[</span>181<span class="cite-bracket">]</span></a> </sup> </td> </tr> <tr> <td rowspan="2" style="text-align: center; background: #f4ca16; textcolor: #000;"> <b> D<br /> E<br /> C </b> </td> <td rowspan="1" style="text-align: center; background: #f8de7e;"><b>6</b></td> <td style="text-align: center;"> <i><a href="/wiki/Pushpa_2:_The_Rule" title="Pushpa 2: The Rule">Pushpa 2: The Rule</a></i> </td> <td><a href="/wiki/Sukumar" title="Sukumar">Sukumar</a></td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Allu_Arjun" title="Allu Arjun">Allu Arjun</a></li> <li><a href="/wiki/Fahadh_Faasil" title="Fahadh Faasil">Fahadh Faasil</a></li> <li><a href="/wiki/Rashmika_Mandanna" title="Rashmika Mandanna">Rashmika Mandanna</a></li> </ul> </div> </td> <td><a href="/wiki/Mythri_Movie_Makers" title="Mythri Movie Makers">Mythri Movie Makers</a></td> <td style="text-align: center;"> <sup id="cite_ref-184" class="reference"> <a href="#cite_note-184"><span class="cite-bracket">[</span>182<span class="cite-bracket">]</span></a> </sup> </td> </tr> <tr> <td rowspan="1" style="text-align: center; background: #f8de7e;"><b>20</b></td> <td style="text-align: center;"><i>Robinhood</i></td> <td><a href="/wiki/Venky_Kudumula" title="Venky Kudumula">Venky Kudumula</a></td> <td> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /> <div class="hlist"> <ul> <li><a href="/wiki/Nithiin" title="Nithiin">Nithiin</a></li> <li><a href="/wiki/Sreeleela" title="Sreeleela">Sreeleela</a></li> </ul> </div> </td> <td><a href="/wiki/Mythri_Movie_Makers" title="Mythri Movie Makers">Mythri Movie Makers</a></td> <td style="text-align: center;"> <sup id="cite_ref-185" class="reference"> <a href="#cite_note-185"><span class="cite-bracket">[</span>183<span class="cite-bracket">]</span></a> </sup> </td> </tr> </tbody> <tfoot></tfoot> </table> 这是我写的Python脚本: soup = BeautifulSoup(html_page, "html.parser") tables = soup.find_all("table",{"class":"wikitable sortable"}) headers = ['month','day','movie','director','cast','producer','reference'] movie_tables = [] total_movies = 0 for table in tables: caption = table.find("caption") if not caption or not caption.get_text().strip(): movie_tables.append(table) #captions = soup.find_all("caption") max_columns = len(headers) # List to store dictionaries data_dict_list = [] movies= [] for movie_table in movie_tables: table_rows = movie_table.find("tbody").find_all("tr")[1:] for table_row in table_rows: total_movies += 1 columns = table_row.find_all('td') row_data = [col.get_text(strip=True) for col in columns] # If the row has fewer columns than the max, pad it with None if len(row_data) == 6: row_data.insert(0, None) elif len(row_data) == 5: row_data.insert(0, None) row_data.insert(1, None) for col in columns: li_tags = col.find_all('li') if li_tags: cast="" for li in li_tags: li_values = li.get_text(strip=True) cast = ', '.join(li_values) row_data.append(cast) else: row_data.append(col.get_text()) # Create a dictionary mapping headers to row data row_dict = dict(zip(headers, row_data)) # Append the dictionary to the list data_dict_list.append(row_dict) # Print the list of dictionaries for row_dict in data_dict_list: print(row_dict) 这是我得到的输出(这里仅显示一些项目): {'month': 'OCT', 'day': '11', 'movie': 'Viswam', 'director': 'Sreenu Vaitla', 'cast': 'GopichandKavya ThaparVennela KishoreSunilNaresh', 'producer': 'Chitralayam StudiosPeople Media Factory', 'reference': '[178]'} {'month': None, 'day': '31', 'movie': 'Lucky Baskhar', 'director': 'Venky Atluri', 'cast': 'Dulquer SalmaanMeenakshi Chaudhary', 'producer': 'Sithara Entertainments', 'reference': '[179]'} {'month': None, 'day': None, 'movie': 'Mechanic Rocky', 'director': 'Ravi Teja Mullapudi', 'cast': 'Vishwak SenMeenakshi Chaudhary', 'producer': 'SRT Entertainments', 'reference': '[180]'} {'month': 'NOV', 'day': '9', 'movie': 'Telusu Kada', 'director': 'Neeraja Kona', 'cast': 'Siddhu JonnalagaddaRaashii KhannaSrinidhi Shetty', 'producer': 'People Media Factory', 'reference': '[181]'} {'month': 'DEC', 'day': '6', 'movie': 'Pushpa 2: The Rule', 'director': 'Sukumar', 'cast': 'Allu ArjunFahadh FaasilRashmika Mandanna', 'producer': 'Mythri Movie Makers', 'reference': '[182]'} {'month': None, 'day': '20', 'movie': 'Robinhood', 'director': 'Venky Kudumula', 'cast': 'NithiinSreeleela', 'producer': 'Mythri Movie Makers', 'reference': '[183]'} 这就是我想要得到的(只是在这里显示最后一项): {'month': 'DEC', 'day': '20', 'movie': 'Robinhood', 'director': 'Venky Kudumula', 'cast': 'Nithiin|Sreeleela', 'producer': 'Mythri Movie Makers', 'reference': '[183]'} 我在最后一天左右一直在尝试调试这个,但我不知道哪里出了问题。 我期待: 当这些列跨越多行并且未在所有行中表示时,月份、日期将填充在所有项目中。 接下来,我想在不同的演员之间有一个分隔符,以便我以后可以轻松创建图表。 另外,在执行所有这些操作时,如何提取超链接并将其存储在字典中的单独键中? 如果您希望显示所有月份,则必须填写未显示的月份。空虚的月份都有一个共同点,那就是和前一个月一样。您可以简单地创建一个名为 lastMonth 的变量,将其分配给第一个月,然后将其与下一个月进行比较。如果下个月是空的,则更换它。如果不为空且与 lastMonth 不同,则将 lastMonth 变量的值替换为当前月份。对所有词典重复此操作,您将获得所有月份。
我正在尝试抓取此网站中的所有评论 - https://www.backmarket.com/en-us/r/l/airpods/345c3c05-8a7b-4d4d-ac21-518b12a0ec17。网站上说有 753 条评论,但是当我尝试抓取时...
Beautiful Soup 'ResultSet' 对象没有属性 'text'
从 bs4 导入 BeautifulSoup 导入 urllib.request 导入 win_unicode_console win_unicode_console.enable() 链接=('https://pietroalbini.io/') req = urllib.request.Request(link, headers={'用户-...
导入请求 从 bs4 导入 BeautifulSoup url = 'https://www.somewebpage.com' 响应 = requests.get(url) 汤 = BeautifulSoup(response.text, 'html.parser') 打印(汤.美化()) 当我跑步时...
我想从特定网页中抓取检查元素数据,并解析它以找到我需要的数据。 导入请求 从 bs4 导入 BeautifulSoup url = 'https://www.somewebpage.com'
我在使用 BeautifulSoup 和 Python 从 MDPI 遥感期刊中抓取 PDF 时遇到问题。 我的代码的目的是抓取每本期刊卷以及其中的问题,以...
在我见过的BeautifulSoup的所有示例和教程中,都会传递一个HTML/XML文档并返回一个汤对象,然后可以使用该对象来修改文档。但是,我该如何使用
我正在编写一个Python脚本,它将在从网页解析后提取脚本位置。 假设有两种情况: <p>我正在编写一个Python脚本,它将在从网页解析后提取脚本位置。 假设有两种情况:</p> <pre><code><script type="text/javascript" src="http://example.com/something.js"></script> </code></pre> <p>和</p> <pre><code><script>some JS</script> </code></pre> <p>我可以从第二种情况获取JS,即JS写在标签内。 </p> <p>但是有什么办法,我可以从第一个场景中获取 src 的值(即提取脚本中 src 标签的所有值,例如 <a href="http://example.com/something.js">http://example.com/something.js</a>)</p> <p>这是我的代码</p> <pre><code>#!/usr/bin/python import requests from bs4 import BeautifulSoup r = requests.get("http://rediff.com/") data = r.text soup = BeautifulSoup(data) for n in soup.find_all('script'): print n </code></pre> <p><strong>输出</strong>:一些JS</p> <p><strong>需要输出</strong>:<a href="http://example.com/something.js">http://example.com/something.js</a></p> </question> <answer tick="true" vote="27"> <p>仅当所有 <pre><code>src</code></pre> 值存在时,它才会获取它们。否则它会跳过那个 <pre><code><script></code></pre> 标签</p> <pre><code>from bs4 import BeautifulSoup import urllib2 url="http://rediff.com/" page=urllib2.urlopen(url) soup = BeautifulSoup(page.read()) sources=soup.findAll('script',{"src":True}) for source in sources: print source['src'] </code></pre> <p>我得到以下两个 <pre><code>src</code></pre> 值作为结果</p> <pre><code>http://imworld.rediff.com/worldrediff/js_2_5/ws-global_hm_1.js http://im.rediff.com/uim/common/realmedia_banner_1_5.js </code></pre> <p>我想这就是你想要的。希望这有用。</p> </answer> <answer tick="false" vote="5"> <p>从脚本节点获取“src”。</p> <pre><code>import requests from bs4 import BeautifulSoup r = requests.get("http://rediff.com/") data = r.text soup = BeautifulSoup(data) for n in soup.find_all('script'): print "src:", n.get('src') <==== </code></pre> </answer> <answer tick="false" vote="1"> <p>这应该可行,您只需过滤以查找所有脚本标签,然后确定它们是否具有“src”属性。如果他们这样做,那么 javascript 的 URL 包含在 src 属性中,否则我们假设 javascript 位于标签中</p> <pre><code>#!/usr/bin/python import requests from bs4 import BeautifulSoup # Test HTML which has both cases html = '<script type="text/javascript" src="http://example.com/something.js">' html += '</script> <script>some JS</script>' soup = BeautifulSoup(html) # Find all script tags for n in soup.find_all('script'): # Check if the src attribute exists, and if it does grab the source URL if 'src' in n.attrs: javascript = n['src'] # Otherwise assume that the javascript is contained within the tags else: javascript = n.text print javascript </code></pre> <p>这个输出是</p> <pre><code>http://example.com/something.js some JS </code></pre> </answer> <answer tick="false" vote="0"> <p>如果有人在 python3.x 中需要这个,这应该可以工作</p> <pre><code>from bs4 import BeautifulSoup as BS import requests res = requests.get("http://rediff.com/", verify=False).text parser = 'html.parser' # or you can use 'lxml' (preferred) soup = BS(res, parser) for item in soup.find_all('script', {'src': True}): print(item['src']) </code></pre> <h3>输出</h3> <pre><code>//newads.rediff.com/rediffadserver/www/delivery/asyncjs.php https://www.googletagservices.com/tag/js/gpt.js https://www.googletagservices.com/tag/js/gpt.js //imworld.rediff.com/worldrediff/js_2_5/sns_us_home_9.js //imworld.rediff.com/worldrediff/js_2_5/us_home_other_4_min.js https://www.googletagmanager.com/gtag/js?id=G-3FM4PW27JR https://fundingchoicesmessages.google.com/i/pub-2932970604686705?ers=1 </code></pre> </answer> </body></html>
我想从 BeautifulSoup 对象创建一个数据框 - 将 pandas 导入为 pd 从请求导入获取 从 bs4 导入 BeautifulSoup 进口再 # 获取网页 url = 'https://carbondale.craig...
Selenium - XPath - 通过innerHTML 搜索元素
我正在学习 Selenium,并且对 XPath 有很好的掌握。 我遇到的一个问题是,在网页上,我想要选择一个具有动态生成的 id 和类的元素。我有三...
我正在尝试使用 BeautifulSoup 和 requests 库从 id='stats_standard' 的表中获取数据,但是我尝试了各种方法,例如使用 find 和 select,但我仍然没有收到...
我想提取内容Hello world。请注意,页面上还有多个 和类似的 : 我想提取内容Hello world。请注意,页面上还有多个 <table> 和类似的 <td colspan="2">:<table border="0" cellspacing="2" width="800"> <tr> <td colspan="2"><b>Name: </b>Hello world</td> </tr> <tr> ... 我尝试了以下方法:hello = soup.find(text='Name: ') hello.findPreviousSiblings 但它什么也没返回。此外,我在以下提取My home address时也遇到问题:<td><b>Address:</b></td> <td>My home address</td> 我也使用相同的方法来搜索 text="Address: " 但如何向下导航到下一行并提取 <td> 的内容? contents 运算符非常适合从 text 中提取 <tag>text</tag> 。 <td>My home address</td> 示例: s = '<td>My home address</td>' soup = BeautifulSoup(s) td = soup.find('td') #<td>My home address</td> td.contents #My home address <td><b>Address:</b></td> 示例: s = '<td><b>Address:</b></td>' soup = BeautifulSoup(s) td = soup.find('td').find('b') #<b>Address:</b> td.contents #Address: 使用 .next 代替: >>> s = '<table border="0" cellspacing="2" width="800"><tr><td colspan="2"><b>Name: </b>Hello world</td></tr><tr>' >>> soup = BeautifulSoup(s) >>> hello = soup.find(text='Name: ') >>> hello.next u'Hello world' .next 和 .previous 允许您按照解析器处理文档元素的顺序移动文档元素,而同级方法则使用解析树。 使用下面的代码使用 python beautifulSoup 从 html 标签中提取文本和内容 s = '<td>Example information</td>' # your raw html soup = BeautifulSoup(s) #parse html with BeautifulSoup td = soup.find('td') #tag of interest <td>Example information</td> td.text #Example information # clean text from html from bs4 import BeautifulSoup, Tag def get_tag_html(tag: Tag): return ''.join([i.decode() if type(i) is Tag else i for i in tag.contents])