繁体   English   中英

Python BeautifulSoup到csv抓取

[英]Python BeautifulSoup to csv scraping

我试图从HTML页面中删除一些简单的字典信息。 到目前为止,我能够在IDE上打印我需要的所有单词。 我的下一步是将单词转换为数组。 我的最后一步是将数组保存为csv文件...当我运行我的代码时,似乎在第1309或第1311字之后停止获取信息,尽管我相信网页上有超过100万。 我被困住了,非常感谢任何帮助。 谢谢

from bs4 import BeautifulSoup
from urllib import urlopen
import csv

html = urlopen('http://www.mso.anu.edu.au/~ralph/OPTED/v003/wb1913_a.html').read()

soup = BeautifulSoup(html,"lxml")

words = []

for section in soup.findAll('b'):

    words.append(section.renderContents())

print ('success')
print (len(words))

myfile = open('A.csv', 'wb')
wr = csv.writer(myfile)
wr.writerow(words)

在此输入图像描述

我无法重现问题(总是得到11616项),但我怀疑你已经安装了过时的beautifulsoup4lxml版本。 升级:

pip install --upgrade beautifulsoup4
pip install --upgrade lxml

当然,这只是一个理论。

我怀疑你的问题很多可能在于你如何处理被删除的内容。 在将所有内容输出到文件之前,是否需要删除所有内容? 或者你可以随时去做吗?

您应该使用yield ,而不是一遍又一遍地追加到列表中。

def tokenize(soup_):
    for section in soup_.findAll('b'):
        yield section.renderContents()

这将给你一个生成器,只要section.renderContents()返回一个字符串,csv模块可以写出没有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM