最近刚开始使用python 3和beautifulsoup学习网络抓取。我在打印我想要的唯一行时遇到问题。
下面我提供了我使用的代码。
product_sizes = view_product.find('dl', id='dl_1')
for product_size in product_sizes.find_all('li'):
product_size = product_size.span.text
print(product_size)
假设我打印此纸时,得到了这种结果
35
36
37
38
39
40
我想说打印第二行。 “ 36”。我怎么做?我在
上尝试了[] product_size = product_size.span.text[0]
但是我得到的是
3
3
3
3
3
4
我希望我打印时会得到类似的东西
36
谢谢。感觉这是个新问题,但是我在Google周围做不到成功。
答案 0 :(得分:1)
执行此操作:
product_sizes = view_product.find('dl', id='dl_1')
c = 0
for product_size in product_sizes.find_all('li'):
if c == 1:
print(product_size.span.text)
c = c + 1
这将为您提供所需的输出:
36
答案 1 :(得分:1)
product_size = product_size.span.text[0]
将在字符串的第一位置输出字符,因此您得到的是3, 3, 3, 3, 3, 4
,而不是35, 36, 37, 38, 39, 40
不需要执行for循环。如果您想要product_sizes.find_all('li')
中的第二个元素,则只需要使用product_sizes.find_all('li')[1]
您可以用更少的代码行执行此操作,如下所示,但这只是为了说明逻辑...
#Get all elements in view_product dl, id='dl_1'
product_sizes = view_product.find('dl', id='dl_1')
# From product_sizes, find all the 'li' tags and choose the 2nd element
product_size = product_sizes.find_all('li')[1]
# Get the text
product_size = product_size.span.text
# print the text
print(product_size)
答案 2 :(得分:0)
您可能不需要循环即可实现所需的功能。
findall() #It returns a list
你可以喜欢
product_sizes.find_all('li')
将列表作为输出返回,然后您可以根据需要进行切片。例如,先说第二个元素
print(product_sizes.find_all('li')[1].text)
最后,您的代码将如下所示
product_sizes = view_product.find('dl', id='dl_1')
print(product_sizes.find_all('li')[1].text) #Prints second element.
输出:
36
答案 3 :(得分:0)
感谢您的输入。我尽力了,并得到了很好的答案。看起来很简单。我想要这个的原因是因为我想以一行的方式在csv中打印它,并且每当出现错误时,我都希望将其留空,以便为其他数据留出空间,就像电子表格一样。但这是不同日期的不同问题。想继续学习一下,然后如果我仍然坚持下去,会在新线程中问(?)。
顺便说一句,下面是我根据你们在这里给出的每个答案所获得的知识所编写的代码。
product_sizes = view_product.find('dl', id='dl_1')
product_size01 = product_sizes.find_all('li')[0].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size02 = product_sizes.find_all('li')[1].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size03 = product_sizes.find_all('li')[2].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size04 = product_sizes.find_all('li')[3].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size05 = product_sizes.find_all('li')[4].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size06 = product_sizes.find_all('li')[5].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size07 = product_sizes.find_all('li')[6].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size08 = product_sizes.find_all('li')[7].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size09 = product_sizes.find_all('li')[8].text.replace('\r', '').replace('\n', '').replace(" ","")
product_size10 = product_sizes.find_all('li')[9].text.replace('\r', '').replace('\n', '').replace(" ","")
感谢你们的快速回答和很棒的社区。