如何使用 Python 3 抓取每个 td 标签内容

文森特·袁

我要分析的内容如下图:

<tr>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">1470-160X</td>

<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;"><a href="http://www.letpub.com.cn/index.php?journalid=2408&amp;page=journalapp&amp;view=detail" style="color:#0099FF; font-size:12px; font-weight:bold; text-decoration:underline;" target="_blank">ECOLOGICAL INDICATORS</a><br><br><font color="grey">ECOL INDIC</font></br></br></td>

<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">3.190</td>

<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">2区</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">环境科学与生态学</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">环境科学</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">SCIE</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">No</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">容易</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">约3.0个月</td>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;"><a href="http://www.letpub.com.cn/index.php?page=journalapp&amp;view=detail&amp;journalid=2408&amp;xuanxiangk_id=2#xuanxk_3" style="color:#0099FF; text-decoration:underline;" target="_blank">文章</a>
<td style="border:1px #DDD solid; border-collapse:collapse; text-align:left; padding:8px 8px 8px 8px;">33977</td></td>

</tr>

你还可以看到截图(一个演示):

所以,我想做的是得到每个 td 内容并将其添加到相应的列表中。

我的代码片段如下:

journal_ISSN = []
journal_name = []
journal_affecting_factors = []
journal_JCR_zone = []
journal_parent_class = []
journal_sub_class = []
journal_SCI = []
journal_acception = []
journal_period = []

for i in range(2, 3):
url = "http://www.letpub.com.cn/index.php?page=journalapp&view=search&searchname=&searchissn=&searchfield=&searchimpactlow=&searchimpacthigh=&searchimpacttrend=&searchscitype=&searchcategory1=%E7%8E%AF%E5%A2%83%E7%A7%91%E5%AD%A6%E4%B8%8E%E7%94%9F%E6%80%81%E5%AD%A6&searchcategory2=%E7%8E%AF%E5%A2%83%E7%A7%91%E5%AD%A6&searchjcrkind=&searchopenaccess=&searchsort=relevance&searchsortorder=desc&currentsearchpage="
resp = urlopen('%s%d%s' % (url, i, 
soup = BeautifulSoup(resp, "html.parser")


journal_table = soup.findAll("table", {"class": "table_yjfx"})
# rows = journal_table.find_All("tr")[1:]
print(journal_table)

for line in journal_table:
    rows = line.findAll('tr')
    for single_line in rows[1:10]:
        col = single_line.findAll('td')
        journal_ISSN.append(col[0].string.strip())
        journal_name.append(col[1].string.strip())
        journal_affecting_factors.append(col[2].string.strip())
        journal_JCR_zone.append(col[3].string.strip())
        journal_parent_class.append(col[4].string.strip())
        journal_sub_class.append(col[5].string.strip())
        journal_SCI.append(col[6].string.strip())
        journal_acception.append(col[7].string.strip())
        journal_period.append(col[8].string.strip())

没有办法完成它。任何人都可以帮忙吗?

我收到了错误消息:

AttributeError: 'ResultSet' 对象没有属性 'string'

小D

您可以使用text代替string和更改您的 for 循环,以下是完整代码供您参考:

from bs4 import BeautifulSoup
from urllib2 import urlopen
journal_ISSN = []
journal_name = []
journal_affecting_factors = []
journal_JCR_zone = []
journal_parent_class = []
journal_sub_class = []
journal_SCI = []
journal_acception = []
journal_period = []
url = "http://www.letpub.com.cn/index.php?page=journalapp&view=search&searchname=&searchissn=&searchfield=&searchimpactlow=&searchimpacthigh=&searchimpacttrend=&searchscitype=&searchcategory1=%E7%8E%AF%E5%A2%83%E7%A7%91%E5%AD%A6%E4%B8%8E%E7%94%9F%E6%80%81%E5%AD%A6&searchcategory2=%E7%8E%AF%E5%A2%83%E7%A7%91%E5%AD%A6&searchjcrkind=&searchopenaccess=&searchsort=relevance&searchsortorder=desc&currentsearchpage=2"
resp = urlopen(url) 
soup = BeautifulSoup(resp.read().decode('utf-8'), "html.parser") #decode to utf-8
journal_table = soup.find("table", {"class": "table_yjfx"})
rows = journal_table.find_all('tr')[2:-1] #filter to get only table data
for row in rows:
    col = row.find_all('td')
    journal_ISSN.append(col[0].text.strip())
    journal_name.append(col[1].text.strip())
    journal_affecting_factors.append(col[2].text.strip())
    journal_JCR_zone.append(col[3].text.strip())
    journal_parent_class.append(col[4].text.strip())
    journal_sub_class.append(col[5].text.strip())
    journal_SCI.append(col[6].text.strip())
    journal_acception.append(col[7].text.strip())
    journal_period.append(col[8].text.strip())

然后你可以打印journal_JCR_zone[0]journal_parent_class[0]

print journal_JCR_zone[0]
print journal_parent_class[0]

输出:

4区
环境科学与生态学

或者您可以将结果写入文件,如下所示:

with open('chinesechar.txt','wb') as outf:
    outf.write(journal_sub_class[0].encode("utf-8"))

将写入环境科学文件chinesechar.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中抓取td标签内的链接

使用特定属性抓取每个 td 元素

如何在Python中使用硒Xpath从tr标签中获取所有td [3]标签

如何使用 Python 3 从 html 标签样式中获取内容?

如何使用beautifulSoup从<td>标签分别抓取数据?

使用 Python、Selenium 和 BeautifulSoup 来抓取标签的内容?

如何从表格python抓取特定的tr或td

Python3网页抓取工具无法从站点中的每个<a>标签提取文本

抓取每个tr值并使用td值创建对象

在 Python 中,如何使用多个 <td> 抓取表?

如何使动态内容在td标签内全高的标签

如何使用Python BeautifulSoup提取td HTML标签?

如何使用python抓取嵌套标签元素

你如何用 python/selenium 抓取偶数 <TD> 元素?

使用python进行网页抓取。无法访问td元素

Web Scraping <td> 标签问题 - 带有 Lxml 的 Python 3

HTML 使用基于 td 标签内容的 javascript 更改字体粗细

如何使用循环从表中抓取数据以使用python获取所有td数据

当网站阻止不抓取内容时,如何使用Python抓取?

如何为表格中的每个td赋予不同的内容

如何每个标签只抓取一个元素?

Python-如何使用“ requests&BeautifulSoup”抓取Tr / Td表数据

使用python抓取动态内容

Python BS4抓取表在<td>标签中具有多个值

想抓取每个特定元素,但使用python beautifulsoup却“无”

使用Python抓取html内容内的内容

使用python和beautifulsoup捕获来自td标签的数据

使用Selenium Python选择span / td标签附近的锚点

PDF抓取:如何为在Python中抓取的每个pdf自动创建txt文件?