所以我有一个html页面,它有一个表单,表格里面有一排产品.
我现在已经到了循环表行的地步,在每个循环中我抓住所有表格单元格.
for tr in t.findAll('tr'):
td = tr.findAll('td')
Run Code Online (Sandbox Code Playgroud)
现在我想从第一个td抓取图像src url.
Html看起来像:
<tr>
<td ...>
<a href ... >
<img ... src="asdf/asdf.jpg" .. >
</a>
</td>
...
</tr>
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我一直在考虑正则表达式.
我试过了:
td[0].a.image.src 但这没有用,因为它没有说'src'属性.
有人可以告诉我如何提取和删除<script>HTML文档中的所有标记,并将它们添加到文档的末尾,就在之前</body></html>?我想尽量避免使用lxml.
谢谢.
我在我的ubuntu 10.04上运行python 3.1.2
我需要安装哪个版本的BeautifulSoup以及如何安装?
我已经下载了3.2版并运行sudo python3 setup.py install
但不起作用
日Thnx
编辑:我得到的错误是:
>>> import BeautifulSoup
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "BeautifulSoup.py", line 448
raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud) 不太明白为什么我收到此跟踪错误:
Traceback (most recent call last):
File "S:/Personal Folders/Andy/Python Projects/Salesforce BZ API/Automated Reports.py", line 15, in <module>
parse = br.soup("find('div')")
File "build\bdist.win32\egg\spynner\browser.py", line 409, in _get_soup
return self._html_parser(self.html)
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
from __future__ import division
#from __future__ import unicode_literals
from __future__ import print_function
import spynner
from BeautifulSoup import BeautifulSoup
#Loading up Salesforce
br = spynner.Browser()
#br.debug_level = spynner.DEBUG
br.create_webview()
br.show()
br.set_html_parser("BeautifulSoup")
br.load("https://login.salesforce.com/")
parse = br.soup("find('div')")
print(parse)
br.browse()
br.close()
Run Code Online (Sandbox Code Playgroud) 我一直试图阅读以下网站的来源:
import urllib2
from BeautifulSoup import BeautifulSoup
url = 'http://www.myurl.com/'
headers = {'User-Agent' : 'Mozilla/5.0'}
request = urllib2.Request(url,None,headers)
soup = BeautifulSoup(urllib2.urlopen(request).read())
Run Code Online (Sandbox Code Playgroud)
我进一步缩小范围scriptResults = soup('script',{'type' : 'text/javascript'}).其内容的样本如下:
scriptResults = [<script type="text/javascript"> ... </script>,
...,
<script type="text/javascript">
//comment 1
$(function () {
//comment 2
var True = true, False = false;
func.start({
token1 : "...",
token2 : [...],
...
tokenN : ["value1","value2",...,"valueK"],
...
})
})
</script>,
...
]
Run Code Online (Sandbox Code Playgroud)
现在我有兴趣提取值tokenN.我知道它在整个文档中是独一无二的,并且存在于我正在尝试阅读的所有网页中.此外,结果的数量scriptResults可能会有所不同,令牌的数量也会有所不同,因此我无法使用位置索引来访问它.另外,我意识到它BeautifulSoup是一个HTML解析器,并不解析JS.我如何使用正则表达式提取此信息?
如果没有一种简单的方法可以获得所有这些,以下可能是妥协.大多数的的 …
我不熟悉beautifulsoup的编码.
当我处理某些页面时,某些属性是中文,我想使用这个中文属性来提取标签.
例如,如下所示的html:
<P class=img_s>
<A href="/pic/93/b67793.jpg" target="_blank" title="????">
<IMG src="/pic/93/s67793.jpg">
</A>
</P>
Run Code Online (Sandbox Code Playgroud)
我想提取'/pic/93/b67793.jpg'所以我做的是:
img_urls = form_soup.findAll('a',title='????')
Run Code Online (Sandbox Code Playgroud)
遇到:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb2 in position 0: ordinalnot in range(128)
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我做了两个方法,都失败了:一种方法是:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)
另一种方式是:
response = unicode(response, 'gb2312','ignore').encode('utf-8','ignore')
Run Code Online (Sandbox Code Playgroud) start_url=requests.get('http://www.delicious.com/golisoda')
soup=BeautifulSoup(start_url)
Run Code Online (Sandbox Code Playgroud)
此代码显示以下错误:
Traceback (most recent call last):
File "test2_requests.py", line 10, in <module>
soup=BeautifulSoup(start_url)
File "/usr/local/lib/python2.7/dist-packages/bs4/__init__.py", line 169, in __init__
self.builder.prepare_markup(markup, from_encoding))
File "/usr/local/lib/python2.7/dist-packages/bs4/builder/_lxml.py", line 68, in prepare_markup
dammit = UnicodeDammit(markup, try_encodings, is_html=True)
File "/usr/local/lib/python2.7/dist-packages/bs4/dammit.py", line 203, in __init__
self._detectEncoding(markup, is_html)
File "/usr/local/lib/python2.7/dist-packages/bs4/dammit.py", line 373, in _detectEncoding
xml_encoding_match = xml_encoding_re.match(xml_data)
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud) 我想用urllib2和beautifulsoup抓取网页.但是我的代码内存不足,有些链接如下:
http://downloads.graboidvideo.com/download_filter.php?file=GraboidVideoSetup.pkg&platform=Mac
这是一个视频下载链接.当我使用urllib2.urlopen()时,它会下载视频,这不是我想要的.有没有办法只下载网址的HTML?如果url引用视频文件或其他文件,我基本上想跳过它,但我不知道该怎么做.
我的代码如下:
toy_url=http://downloads.graboidvideo.com/download_filter.php?file=GraboidVideoSetup.pkg&platform=Mac
headers = {'USER-Agent':'crawltaosof'}
req = urllib2.Request(url, None,headers)
page = urllib2.urlopen(req,timeout=0.51).read()
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个网络爬虫,使用我的凭据登录学校网站,然后抓取网站的某些部分.我正在使用这里找到的Beautiful Soup Python库:
http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Run Code Online (Sandbox Code Playgroud)
我可以获得用户名和密码字段的正确源代码,但我不知道如何提供它们.另外,我提交它们也有同样的问题.我已经删除了"提交"按钮的源代码,但我不知道如何请求登录.
谢谢,
find_previous在特定标签之前提供标签,但我想在<b>标签上方的<table>标签中查找文本。
"
<h2>Hi</h2>
<b>I am here</b>
<b>Output</b>
<h2>Hi</h2>
<table>
.....
</table>
"
Run Code Online (Sandbox Code Playgroud)
预期输出应为Output。我怎样才能做到这一点?