我正在使用以下代码尝试进行网页抓取。
import sys , os
import requests, webbrowser,bs4
from PIL import Image
import pyautogui
p = requests.get('http://www.goal.com/en-ie/news/ozil-agent-eviscerates-jealous-keown-over-stupid-comments/1javhtwzz72q113dnonn24mnr1')
n = open("exml.txt" , 'wb')
for i in p.iter_content(1000) :
n.write(i)
n.close()
n = open("exml.txt" , 'r')
soupy= bs4.BeautifulSoup(n,"html.parser")
elems = soupy.select('img[src]')
for u in elems :
print (u)
所以我打算做的是提取从页面获得的xml响应中的所有图像链接。 (请纠正我如果我认为requests.get返回输入网址时打开的网页的整个静态html文件我错了)
然而在线:
soupy= bs4.BeautifulSoup(n,"html.parser")
我收到以下错误:
Traceback (most recent call last):
File "../../perl/webscratcher.txt", line 24, in <module>
soupy= bs4.BeautifulSoup(n,"html.parser")
File "C:\Users\Kanishc\AppData\Local\Programs\Python\Python36-32\lib\site-packages\bs4\__init__.py", line 191, in __init__
markup = markup.read()
File "C:\Users\Kanishc\AppData\Local\Programs\Python\Python36-32\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 24662: character maps to <undefined>
我对错误以及&#34; Appdata&#34;无能为力。文件夹是空的。
如何进一步处理?
发布尝试建议:
我将文件名的扩展名更改为py,并删除了此错误。但是在以下一行:
soupy = bs4.BeautifulSoup(n,&#34; lxml&#34;)我收到以下错误:
追踪(最近一次通话): 文件&#34; C:\ perl \ webscratcher.py&#34;,第23行,in soupy = bs4.BeautifulSoup(p,&#34; lxml&#34;) 文件&#34; C:\ Users \ PREMRAJ \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ bs4__init __。py&#34;,第192行, init elif len(标记)&lt; = 256和( TypeError:类型&#39;响应&#39;的对象没有len()
如何解决这个问题?
答案 0 :(得分:1)
你的事情过于复杂。将Response对象的字节内容直接传递给BeautifulSoup对象的构造函数,而不是将其写入文件。
var globalResizeTimeout;
function debounce(fn, wait) {
clearTimeout(globalResizeTimeout);
globalResizeTimeout = setTimeout(function () {
fn.apply(this, arguments)
}, (wait || 1));
}
答案 1 :(得分:0)
好的,你可能想对使用BeautifulSoup进行评论。我引用了我的一个旧项目,这就是打印它们所需要的。选中BS documents,使用select方法找到所需的确切语法。
这将打印来自html的所有img标签
--- Html ---
<div id=div>
<img class=img1 src=http://icons.iconarchive.com/icons/graphicloads/100-flat/256/home-icon.png>
<img class=img2 src=https://pt.seaicons.com/wp-content/uploads/2015/07/Mushroom-1UP-icon.png>
</div>
--- CSS ---
#div{
background:black;
width:100%;
height:200px;
transition: background 2.3s linear;
position: relative;
}
#div img{
position: absolute;
top: 0;
left: 0;
transition: all 2.3s linear;
}
.img2{opacity: 0;}
--- JS ---
$(function(){
$("#div").mouseover(function(){
var $p = $("#div");
$p.css("background-color","yellow");
$(".img1").css("opacity", 0);
$(".img2").css("opacity", 1);
});
});