Python 在</部门>;及</td>;

Python 在</部门>;及</td>;,python,re,Python,Re,我正在使用python和BeautifulSoup创建一个网站。我可以通过以下命令找到页面上的所有tds: data = soup.find_all('td') 然后我找到我需要使用的第一个td: td = data[19] 如果我打印此td,则输出为: <td data-geoid="0617568" data-isnumeric="1" data-srcnote="true" data-value="18.8"> <span data-title="Culver Cit

我正在使用python和BeautifulSoup创建一个网站。我可以通过以下命令找到页面上的所有tds:

data = soup.find_all('td')
然后我找到我需要使用的第一个td:

td = data[19]
如果我打印此td,则输出为:

<td data-geoid="0617568" data-isnumeric="1" data-srcnote="true" data-value="18.8">
<span data-title="Culver City city, California"></span><div class="qf-sourcenote">
<span></span><a title="Source: 2018 American Community Survey (ACS), 5-year estimates. Estimates are not comparable to other geographic levels due to methodology differences that may exist between different data sources."></a>
</div>18.8%</td>

 要尝试使用以下代码提取它:

m = re.search('</div>(.+?)</td>', td)
m=re.search(“(.+?)”,td)
这给了我以下错误:

Traceback (most recent call last):
  File "/Users/Alfie/PycharmProjects/474scrape/srape.py", line 18, in <module>
    m = re.search('</div>(.+?)</td>', td)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py", line 183, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
回溯(最近一次呼叫最后一次):
文件“/Users/Alfie/PycharmProjects/474scrape/srape.py”,第18行,在
m=重新搜索(“(.+?)”,td)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py”,搜索中的第183行
返回编译(模式、标志)。搜索(字符串)
TypeError:应为字符串或类似字节的对象

我认为问题在于我使用的标记中的转义字符或类似的东西。感谢您的帮助

td
可能不是str类型的

如果
td
属于
str
类型,代码应该可以正常工作

import re

td = """
<td data-geoid="0617568" data-isnumeric="1" data-srcnote="true" data-value="18.8">
<span data-title="Culver City city, California"></span><div class="qf-sourcenote">
<span></span><a title="Source: 2018 American Community Survey (ACS), 5-year estimates. Estimates are not comparable to other geographic levels due to methodology differences that may exist between different data sources."></a>
</div>18.8%</td>
"""

m = re.search(r'</div>(.+?)</td>', td)
print(m.group(1))
# 18.8%
重新导入
td=”“”

18.8%
"""
m=重新搜索(r'(.+?)',td)
印刷品(m.group(1))
# 18.8%
试着替换

m = re.search(r'</div>(.+?)</td>', td)
m=re.search(r'(.+?)',td)

m=re.search(r'(.+?)',str(td))

td
可能不是
str
类型

如果
td
属于
str
类型,代码应该可以正常工作

import re

td = """
<td data-geoid="0617568" data-isnumeric="1" data-srcnote="true" data-value="18.8">
<span data-title="Culver City city, California"></span><div class="qf-sourcenote">
<span></span><a title="Source: 2018 American Community Survey (ACS), 5-year estimates. Estimates are not comparable to other geographic levels due to methodology differences that may exist between different data sources."></a>
</div>18.8%</td>
"""

m = re.search(r'</div>(.+?)</td>', td)
print(m.group(1))
# 18.8%
重新导入
td=”“”

18.8%
"""
m=重新搜索(r'(.+?)',td)
印刷品(m.group(1))
# 18.8%
试着替换

m = re.search(r'</div>(.+?)</td>', td)
m=re.search(r'(.+?)',td)

m=re.search(r'(.+?)',str(td))

尝试将模式作为原始字符串传递

m = re.search(r'</div>(.+?)</td>', td)
m=re.search(r'(.+?)',td)

如果这不起作用,请检查td的类型,如果它不是字符串,则将其转换为字符串,然后传递给函数。

尝试将模式作为原始字符串传递

m = re.search(r'</div>(.+?)</td>', td)
m=re.search(r'(.+?)',td)
如果这不起作用,请检查td的类型,如果它不是字符串,则将其转换为字符串,然后传递给函数