【问题标题】:Unicode Web ScrapingUnicode 网页抓取
【发布时间】:2015-06-23 20:36:08
【问题描述】:

我正在从 barney 网站上抓取项目 ID,我在从输出中删除 unicode 时遇到问题。例如,我想获取项目 ID 为 503777359,但获取项目 ID 的输出是 [u '503777359']。我希望输出是这样的:- 503777359。我该怎么办?

d3 包含:“Fairfax 海军蓝和白色 Glenn 格子棉府绸正装衬衫。翻领、单纽扣筒形袖口、肩部过肩和背面垂直折缝、衬衣下摆、珍珠母纽扣提供海军蓝/白色棉机洗制造日本我们的模特身高 6 英尺 1 英寸/185 厘米,所穿尺码为 15.5。 款式#503777359"

    d2=item.find("div",{"class":"panel-body standard-p"})
    d3=d2.text
    print d3
    p_id = re.findall(r'[0-9]{9}',d3)
    print p_id

【问题讨论】:

  • 输出在哪里或d3中有什么?
  • 很抱歉,现在检查。我编辑了我的问题!
  • 能否请您也发布您正在抓取的链接?
  • 几个问题:是否有一个列表页面将您引导至此 URL?你从哪里得到你正在使用的 URL?是否有很长的 URL 列表,您的代码将在这些 URL 上运行? URL 中的产品 ID 没有用吗?

标签: python unicode web-scraping beautifulsoup


【解决方案1】:

只需将您的 [list] 结果转储到这样的变量中:

d2=item.find("div",{"class":"panel-body standard-p"})
d3=d2.text
print d3
p_id = re.findall(r'[0-9]{9}',d3)
idICareAbout = p_id[0]

当然,您可以获取相同的来源并寻找

"<meta property="product:retailer_part_no" content="503777359" />"

获取只有一个结果的 ID。

希望这会有所帮助!

【讨论】:

  • 还有一个问题:- 如果我需要像下面显示的那样连接这个 p_id[0]..我应该怎么做?代替 p= (the 9digit numbers) ,我必须连接这个 p_id @ClaFarge
  • 删除任何引号和大于号,这样我就可以看到您评论的内容...我敢打赌我们可以弄清楚 ;)
  • 如果您在该链接本身中搜索 p=503777359,我只想将“p=”之后的整个部分(id)替换为我得到的输出,即 idICareAbout。
  • oldStr = "p=503777359&blah" newStr = oldStr.replace("503777359", "503NEW359")
【解决方案2】:

AFAIK 如果字符串不包含奇怪的字符,即代码点 128 或更高,则可以使用 str() 轻松将其转换为 ascii。这不是 unicode 抓取。您正在打印列表的内容。例如,

p_id=[u'503777359']

print p_id

[u'503777359']

p_id=[str(u'503777359')]

print p_id

['503777359']

如你所见,“u”神奇地消失了。

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 2016-05-27
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多