gpt4 book ai didi

python - Scraper 无法打印所有结果

转载 作者:行者123 更新时间:2023-12-01 02:39:07 30 4
gpt4 key购买 nike

我用 python 编写了一个脚本,用于从 craigslist 中抓取五个项目的“姓名”和“电话”。我面临的问题是,当我运行脚本时,它只给出三个结果而不是五个结果。更具体地说,由于前两个链接的页面中没有附加链接(联系信息),因此它们不需要再次请求打开任何附加页面。然而,没有(联系信息)链接的两个链接无法渗透到我的第二个函数中的“if ano_page_link:”语句,并且永远不会被打印。我该如何修复这个缺陷,以便无论是否有电话号码,抓取工具都会打印所有五个结果。

我正在尝试使用的脚本:

import re ; import requests ; from lxml import html

base = "http://bangalore.craigslist.co.in"

url_list = [
'http://bangalore.craigslist.co.in/reb/d/flat-is-for-sale-at-cooke-town/6266183606.html',
'http://bangalore.craigslist.co.in/reb/d/prestige-sunnyside/6259128505.html',
'http://bangalore.craigslist.co.in/reb/d/jayanagar-2nd-block-4000-sft/6221720477.html',
'http://bangalore.craigslist.co.in/reb/d/prestige-ozone-type-3-r-villa/6259928614.html',
'http://bangalore.craigslist.co.in/reb/d/zed-homes-3-bedroom-flat-for/6257075793.html'
]

def get_link(medium_link):
response = requests.get(medium_link).text
tree = html.fromstring(response)
try:
name = tree.cssselect('span#titletextonly')[0].text
except IndexError:
name = ""
try:
link = base + tree.cssselect('a.showcontact')[0].attrib['href']
except IndexError:
link = ""
parse_doc(name, link)

def parse_doc(title, ano_page_link):

if ano_page_link:
page = requests.get(ano_page_link).text
tel = re.findall(r'\d{10}', page)[0] if re.findall(r'\d{10}', page) else ""
print(title, tel)

if __name__ == '__main__':
for link in url_list:
get_link(link)

我得到的结果:

Jayanagar 2nd Block, 4000 sft Plot for Sale 9845012673
PRESTIGE OZONE TYPE D 3 B/R VILLA FOR SALE 9611226364
T ZED HOMES 3 BEDROOM FLAT FOR SALE 9611226364

我期待的结果:

A Flat is for sale at  Cooke Town
Prestige Sunnyside
Jayanagar 2nd Block, 4000 sft Plot for Sale 9845012673
PRESTIGE OZONE TYPE D 3 B/R VILLA FOR SALE 9611226364
T ZED HOMES 3 BEDROOM FLAT FOR SALE 9611226364

最佳答案

请注意,例如,在 http://bangalore.craigslist.co.in/reb/d/flat-is-for-sale-at-cooke-town/6266183606.html 上没有与 'a.showcontact' 选择器匹配的链接,因此以下 block

try:
link = base + tree.cssselect('a.showcontact')[0].attrib['href']
except IndexError:
link = ""

将返回link = ""

然后,当您调用 if ano_page_link: 时,if block 中的所有命令都会被忽略,因为条件 if ""False 没有打印任何内容

您可以尝试以下方法:

def parse_doc(title, ano_page_link):

if ano_page_link:
page = requests.get(ano_page_link).text
tel = re.findall(r'\d{10}', page)[0] if re.findall(r'\d{10}', page) else ""
print(title, tel)
else:
print(title)

关于python - Scraper 无法打印所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45917829/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com