<table class = 'content_box_item' border = 1 cellspacing=0 cellpadding=3 width = '720px'>
<tr class = 'lmd'>
<td class = 'bborder' align = 'left' colspan=10>
<table class='btext' width='100%'><tr>
<td width=24><img src = 'http://file5.ratemyserver.net/items/small/601.gif' border = '0' onMouseOver = "ddrivetip_image('<img src = \'http://file5.ratemyserver.net/items/large/601.gif\' border = \'1\'>')" onMouseOut = "hideddrivetip_image()"></td>
<td valign='bottom'><b> 苍蝇翅膀 </b> 物品 ID# 601 (Wing_Of_Fly)</td></td>
<td valign='bottom' align='right'>
<a href='index.php?page=re_item_db&item_id=601&ird=0' title='查看这物品复兴后的资料' onclick='return popItem_re("601&ird=0",1,1)'><img src='images/see_renewal.gif' border=0></a>
<a href='item_sprname_search.php?item_id=601'><img src='images/spr.gif' border=0 title='look up sprite name' onclick="return popWin('item_sprname_search.php?item_id=601&small=1', 'name', spr_dim)"></a>
</tr>
</table>
看出问题了吗,第4行的 <table> 在第6行被 </td></td> 提前结束了。所以第11行的</table>把第1行的 <table class = 'content_box_item' ...>给结束了
也就是说
soup.find_all('table', attrs={"class": "content_box_item"})其实只解析了上面那部分内容。
简单的说,这个页面写得很不规范,只有聪明的浏览器才能解决这种不规范问题,这种库解决不了。
bs4 的解析器你换成lxml试试 用js呗
这句就能获得你要的全部table,然后直接在控制台里复制出来粘贴到本地的html里
麻烦的是每个页面要重新复制粘贴一遍
let tables = document.getElementsByClassName('content_box_item')
自己写正则吧 佐塚間桐 发表于 2019-10-3 11:03
试方法多半比手动慢。但是我贴的这一类是7页,其他的有几十页的,还有一百多页的,不想机械运动 ...
用js的话你的需求实现起来很简单,不过想一键操作会有跨域问题。在浏览器控制台写不会跨域但是麻烦的一笔。
不会写爬虫,帮不到你了 这网页table套table的把👴看麻了,我寻思你要是想保留原格式的话够你喝一壶
我寻思要么你(JS) document.querySelectorAll('table.content_box_item') ,取innerText,再正则处理
要么按照表结构写选择器,感觉工作量应该差不多 试试pyquery
—— 来自 samsung SM-G9600, Android 9上的 S1Next-鹅版 v2.1.2 佐塚間桐 发表于 2019-10-3 21:32
请问选择器的思路是什么呢?
我现在想到的是干脆不管什么table不table了,直接用每个关键字定位,读取后 ...
我看这样
document.querySelectorAll('table.content_box_item > tbody > tr') 这样选出来的nodelist,每个元素就是表的一行,你要分列就再写细点
document.querySelectorAll('table.content_box_item tr.lmd td > img') 选择所有图标,你要的应该是大图,在元素属性里有
你用这两个选择器做应该就可以了,前一个取innerText,后一个取得图片地址再下图片 搭车问个问题我有几十个log文件,都是text/csv格式,有没有同时打开同步滚动高亮差异内容的工具? win8 发表于 2019-10-3 22:05
搭车问个问题我有几十个log文件,都是text/csv格式,有没有同时打开同步滚动高亮差异内容的工具? ...
百度一下Diffchecker 有各种查差异内容的网站
不过只能对比2个文件 多个文件的没看过,毕竟很少有这种需求 用js操纵无头chrome的库Puppeteer。我的笨办法:根据content_box_item这个选择器找到表格,存数组里。如果页面上有下一页这个按钮就点一下,再找表格存好。没有下一页就退出程序。合并表格数组之后加上头尾生成完整html写入文件。应该有更好的思路。查了一下python下有一个第三方的port叫pyppeteer,楼主有兴趣可以试试。
就只把7页content_box_item取出来了。
链接: https://pan.baidu.com/s/1yBjOelMcjRPKrX98W35iSQ 提取码: st8e 佐塚間桐 发表于 2019-10-5 01:22
现在已经能正常读取名字,但还有问题。在python里面输出显示的是乱码: ²ÔÓ¬³á°ò
查了一下,原始 ...
http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#id3
指定下编码
或者取字节流自己转字符串 我明天用公司的产品试试
—— 来自 Google Pixel 2 XL, Android 10上的 S1Next-鹅版 v2.1.2
页:
[1]