def getHTMLText(url):#爬取网站数据 try: r = requests.get(url, timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return '爬取失败' def fillUnivlist(ulist,html):#解析网站数据 soup = BeautifulSoup(html,"html.parser") for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): tds = tr('td') ulist.append([tds[0].text,tds[1].text,tds[2].text,tds[3].text,tds[4].text,tds[5].text,tds[6].text,tds[7].text]) def fillUnivlist2(ulist,html):#解析网站数据 soup = BeautifulSoup(html,"html.parser") for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): tds = tr('td') ulist.append([tds[0].text,tds[1].text,tds[2].text])
时间: 2024-04-08 16:35:16 浏览: 282
爬取网站职位_爬虫_爬取拉勾网_拉勾网_职位_
这段代码看起来是一个简单的网页爬虫,使用了`requests`库和`BeautifulSoup`库来获取和解析网页数据。然而,你并没有提供你遇到的具体问题,所以我假设你的问题是关于`children`的使用错误。
在这里,`children`是BeautifulSoup对象中的一个方法,用于获取当前标签的子标签。但是,请注意,它返回的是一个迭代器,而不是一个列表或其他可直接访问的对象。因此,你需要对其进行迭代或将其转换为列表,才能使用其中的元素。
在你的代码中,`fillUnivlist`和`fillUnivlist2`函数中的以下行:
```python
for tr in soup.find('tbody').children:
```
这里的`soup.find('tbody').children`返回的是一个迭代器对象,你需要在其后面添加循环来逐个访问子标签。例如,你可以修改这些函数的代码如下:
```python
def fillUnivlist(ulist, html):
soup = BeautifulSoup(html, "html.parser")
tbody = soup.find('tbody')
if tbody:
for tr in tbody.children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([td.text for td in tds])
def fillUnivlist2(ulist, html):
soup = BeautifulSoup(html, "html.parser")
tbody = soup.find('tbody')
if tbody:
for tr in tbody.children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([td.text for td in tds[:3]])
```
这样,你就可以正确地遍历`soup.find('tbody').children`并使用其中的子标签了。希望这能帮助到你解决问题!如果有任何进一步的疑问,请随时提问。
阅读全文