0

这是我在这个网站上的第一个问题,因为我尝试了很多方法来获得我想要的东西,但我没有成功。我尝试从类似于 CraigList 的法国网站中提取两种类型的数据。我的需求很简单,我设法获得了这些信息,但我的摘录中仍然有标签和其他标志。即使使用 .encode(utf-8),我也有编码问题。

# -*- coding: utf-8 -*-
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import csv

csvfile=open("test.csv", 'w+')

html=urlopen("http://www.leboncoin.fr/annonces/offres/ile_de_france/")

bsObj=BeautifulSoup(html)
article= bsObj.findAll("h2",{"class":"title"})
prix=bsObj.findAll("div",{"class":"price"})

for art in article:
    art=art.text.encode('utf-8')

print(article)

for prix1 in prix:
    prix1=prix1.text.encode('utf-8')
    print(prix1)

#Pour merger 2 listes (en deux colonnes, pas a la suite)
table_2=list(zip(article,prix))

try:
    writer=csv.writer(csvfile)
    writer.writerow(('Article', 'Prix'))

    for i in table_2:
        writer.writerow([i])

finally:
    csvfile.close()

运行此代码时:

  • 我的输出包含等。虽然我已经运行:

对于文章中的艺术: art=art.text.encode('utf-8')

  • 有时,由于产品名称中的“€”或“-”符号,编码不起作用

我的问题是:

  • 为什么“.text.encode()”不能从我的文章对象中清除标签?
  • 为什么我仍然遇到编码问题?

我想我没有按预期使用该功能,但尽管我进行了测试,但我没有得到结果..

提前感谢您的见解。

干杯

4

1 回答 1

0

您可能已经意识到自己的错误。您正在压缩和输出NavigationElements而不是元素文本。我在下面更正了您的代码:

# -*- coding: utf-8 -*-
from urllib2 import urlopen
from bs4 import BeautifulSoup
import re
import csv

csvfile=open("test.csv", 'w+')

html=urlopen("http://www.leboncoin.fr/annonces/offres/ile_de_france/")

bsObj=BeautifulSoup(html, "html.parser")
article= bsObj.findAll("h2",{"class":"title"})
prix=bsObj.findAll("div",{"class":"price"})

articles = []
for art in article:
    articles.append(art.text.encode('utf-8').strip())

print(art)

prices = []
for prix1 in prix:
    prices.append(prix1.text.encode('utf-8').strip())

#Pour merger 2 listes (en deux colonnes, pas a la suite)
table_2=list(zip(articles,prices))

try:
    writer=csv.writer(csvfile)
    writer.writerow(('Article', 'Prix'))

    for i in table_2:

        writer.writerow([i])

finally:
    csvfile.close()

下次也尽量不要用法语发表评论;)

于 2015-09-25T15:20:20.573 回答