我试图解析给定的html文件以查找所有表.它实际上来自Android的api差异报告.
这是python代码,我手动将所有内容插入到脚本中:
from bs4 import BeautifulSoup
input='''
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "//www.w3.org/TR/html4/strict.dtd">
<HTML style="overflow:auto;">
<HEAD>
<meta name="generator" content="JDiff v1.1.0">
<!-- Generated by the JDiff Javadoc doclet -->
<!-- (http://www.jdiff.org) -->
<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, …Run Code Online (Sandbox Code Playgroud) 我使用urllib2来获取网页,我需要在返回的数据中查找特定值.
使用Beautiful Soup并使用find方法或使用正则表达式搜索数据是最好的方法吗?
以下是请求返回的文本的一个非常基本的示例:
<html>
<body>
<table>
<tbody>
<tr>
<td>
<div id="123" class="services">
<table>
<tbody>
<tr>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> Example BLAB BLAB BLAB </td>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
</tr>
<tr>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
</tr>
<tr>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" class="style8"> BLAB BLAB BLAB </td>
<td style="PADDING-LEFT: 5px"bgcolor="ffffff" …Run Code Online (Sandbox Code Playgroud) 我试图抓住网站上的一些链接,并在他们被清理后将它们写入文件.网站上的链接如下所示:
<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a><br>
<a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a><br>
<a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a><br>
<a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a><br>
<a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a><br>
<a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a><br>
Run Code Online (Sandbox Code Playgroud)
我可以用它抓住它们:
links = soup.findAll(href=re.compile("javascript"))
Run Code Online (Sandbox Code Playgroud)
给我这个输出:
[<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a>, <a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a>, <a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a>, <a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a>, <a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a>, <a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a>]
Run Code Online (Sandbox Code Playgroud)
现在我想清理它,所以我只得到''之间的http://部分,这就是它变坏的地方.
我试过了
fullink = links.get('href')
Run Code Online (Sandbox Code Playgroud)
我收到错误的地方:
'ResultSet' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)
那么如何从中获取链接呢?
我正在尝试解析这个网站,由于我无法理解的原因,没有任何事情发生.
url = 'http://www.zap.com.br/imoveis/rio-de-janeiro+rio-de-janeiro/apartamento-padrao/venda/'
response = urllib2.urlopen(url).read()
doc = BeautifulSoup(response)
divs = doc.findAll('div')
print len(divs) # prints 0.
Run Code Online (Sandbox Code Playgroud)
该网站是巴西里约热内卢的一个真实广告.我在html源代码中找不到任何可以阻止Beautifulsoup工作的东西.这是大小吗?
我正在使用Enthought Canopy Python 2.7.6,IPython Notebook 2.0,Beautifulsoup 4.3.2.
这就是我试图获取所有链接的方式:
soup.find("div", attrs={"class": "vl-article-title"}).find("h3").find("span").find("a")
Run Code Online (Sandbox Code Playgroud)
这只找到第一个,但正如我所说,我需要所有这些.
为什么这不起作用:
soup.findAll("div", attrs={"class": "vl-article-title"}).find("h3").find("span").find("a")
Run Code Online (Sandbox Code Playgroud)
?
我收到一个错误:
'ResultSet' object has no attribute 'find'
Run Code Online (Sandbox Code Playgroud) 我正在尝试从Wikipedia页面获取重要图像,而不是缩略图或其他gif,并使用以下代码。但是,“ img”的长度为“ 0”。关于如何纠正它的任何建议。
代码:
import urllib
import urllib2
from bs4 import BeautifulSoup
import os
html = urllib2.urlopen("http://en.wikipedia.org/wiki/Main_Page")
soup = BeautifulSoup(html)
imgs = soup.findAll("div",{"class":"image"})
Run Code Online (Sandbox Code Playgroud)
另外,如果有人可以通过查看网页中的“源元素”来详细说明如何使用findAll。那太好了。
我有:
<div class="image" style="background-image: url('/uploads/images/players/16113-1399107741.jpeg');"
Run Code Online (Sandbox Code Playgroud)
我想获取网址,但是如果不使用正则表达式,我将无法做到这一点。可能吗?
到目前为止,我使用正则表达式的解决方案是:
url = re.findall('\('(.*?)'\)', soup['style'])[0]
Run Code Online (Sandbox Code Playgroud) 这是我的代码,使用find_all,但它适用于.find():
import requests
from BeautifulSoup import BeautifulSoup
r = requests.get(URL_DEFINED)
print r.status_code
soup = BeautifulSoup(r.text)
print soup.find_all('ul')
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
Traceback (most recent call last):
File "scraper.py", line 19, in <module>
print soup.find_all('ul')
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud) 我有两个
bs4.element.ResultSet
Run Code Online (Sandbox Code Playgroud)
对象.
我们打电话给他们吧
rs1
rs2
Run Code Online (Sandbox Code Playgroud)
我想要一个结果集(让我们称之为rs)以及结果集中的所有结果.
我还需要弄明白:
我是python的新手,目前正在编写一个从Web上删除数据的应用程序.它主要完成,编码只剩下一点问题.该网站编码ISO-8859-1,但当我尝试html.decode('iso-8859-1'),它没有做任何事情.如果你运行程序,使用50000和50126PLZs你会看到我在输出中的意思.如果有人可以帮助我,那将是非常棒的.
import urllib.request
import time
import csv
import operator
from bs4 import BeautifulSoup
#Performs a HTTP-'POST' request, passes it to BeautifulSoup and returns the result
def doRequest(request):
requestResult = urllib.request.urlopen(request)
soup = BeautifulSoup(requestResult)
return soup
#Returns all the result links from the given search parameters
def getLinksFromSearch(plz_von, plz_bis):
database = []
links = []
#The search parameters
params = {
'name_ff': '',
'strasse_ff': '',
'plz_ff': plz_von,
'plz_ff2': plz_bis,
'ort_ff': '',
'bundesland_ff': '', …Run Code Online (Sandbox Code Playgroud) beautifulsoup ×10
python ×10
web-scraping ×2
html ×1
html-parsing ×1
python-2.7 ×1
python-3.x ×1
regex ×1
string ×1
url ×1
urllib ×1