Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用BeautifulSoup替换“td”标记中的“img”标记?_Python_Python 3.x_Beautifulsoup_Html Parsing - Fatal编程技术网

Python 如何使用BeautifulSoup替换“td”标记中的“img”标记?

Python 如何使用BeautifulSoup替换“td”标记中的“img”标记?,python,python-3.x,beautifulsoup,html-parsing,Python,Python 3.x,Beautifulsoup,Html Parsing,我正在尝试使用python3.8.7和BeautifulSoup4.9.3解析一个充满表格的网页,以便在电报频道上显示它。我可以从网页上获得所有必要的表格,但在这些表格的深处有td标签,其中包含带有星型src的img标签,需要用p标签替换。以下是迄今为止的守则: 进口泡菜 将bs4作为bs导入 v_file=open'data/pickled_data/pickled_v','rb' v_pickled=pickle.loadv_文件 v_soup=bs.BeautifulSoupv_pickl

我正在尝试使用python3.8.7和BeautifulSoup4.9.3解析一个充满表格的网页,以便在电报频道上显示它。我可以从网页上获得所有必要的表格,但在这些表格的深处有td标签,其中包含带有星型src的img标签,需要用p标签替换。以下是迄今为止的守则:

进口泡菜 将bs4作为bs导入 v_file=open'data/pickled_data/pickled_v','rb' v_pickled=pickle.loadv_文件 v_soup=bs.BeautifulSoupv_pickled.content,html5lib 所有的汤。找到所有的“桌子” 我已尝试替换图像(又名star_图像),如下所示,但它返回AttributeError:“NoneType”对象没有属性“replace_with”:

url_2_检查=https://i.imgur.com/ffIvqVj.png 对于所有表格中的表格: 对于表中的tr,查找所有“tr”: 对于表中的td,请查找所有“td”: 对于td中的star_图像,请查找所有“img”: 如果星形图像['src']==url\u 2\u检查: p_标签=v_汤。新的p标签 p_tag.string=:星形: td.star\u image.用P\u标签替换 然后我按如下方式尝试,但它返回ValueError:当要替换的元素不是树的一部分时,无法将一个元素替换为另一个元素:

对于所有表格中的表格: 对于表中的tr,查找所有“tr”: 对于表中的td,请查找所有“td”: 对于td中的star_图像,请查找所有“img”: 如果星形图像['src']==url\u 2\u检查: p_标签=v_汤。新的p标签 p_tag.string=:星形: td.用P_标签替换_ 我似乎无法找出我做错了什么,有人能帮忙吗


谢谢。

要解析表中的数据,可以使用以下示例:

导入请求 从bs4导入BeautifulSoup url=https://xxviptips.blogspot.com/ soup=BeautifulSouprequests.geturl.content,lxml 对于汤中的t.selecttable: 行=t.selecttr league=行[0]。get_textstrip=True 匹配,信息1,信息2=[ td.get_textstrip=True,用于第[1]行中的td。选择td ] rate_star=.join[:star:]*lenrows[2]。选择img 打印
{:你能分享URL吗?@AndrejKesely你想用一个数字来代替星星吗?不,我想用一个文字来代替它,上面写着:星星:谢谢你的快速回复。介意我问你一些关于代码的解释吗?@GaddBWeldesenbet页面的结构是每一场比赛都是分开的。每一场比赛有4行。我从第一个r得到联赛名称哦,匹配第二排的名字等。我明白了,我不知道在BeautifulSoup中选择…我应该RTFM。非常感谢。