Python:使用来自多个嵌套for循环的数据编写csv
我正在尝试废弃一个网站,并将数据写入csv。 问题是,因为我使用的是嵌套循环,所以所有数据都不会以csv结尾Python:使用来自多个嵌套for循环的数据编写csv,python,csv,for-loop,Python,Csv,For Loop,我正在尝试废弃一个网站,并将数据写入csv。 问题是,因为我使用的是嵌套循环,所以所有数据都不会以csv结尾 import requests from bs4 import BeautifulSoup from csv import writer with open ("full_links_details.csv", 'w', newline='') as csv_file: csv_writer = writer(csv_file) csv_writer.writero
import requests
from bs4 import BeautifulSoup
from csv import writer
with open ("full_links_details.csv", 'w', newline='') as csv_file:
csv_writer = writer(csv_file)
csv_writer.writerow(["Details", "Details_Link", "image_link"])
z = """
<div class="container container1">
<ul class="splist-view">
<li class="wow fadeInUp">
<div class="row">
<div class="pic">
<a href="some_link_a">
<img src="some_image_link_a">
</a>
</div>
<div class="detail">
<ul>
<li class="hd"><a href="some_link_a">SomeTitleText-A</a></li>
</ul>
</div>
</div>
</li>
<li class="wow fadeInUp">
<div class="row">
<div class="pic">
<a href="some_link_b">
<img src="some_image_link_b">
</a>
</div>
<div class="detail">
<ul>
<li class="hd"><a href="some_link_b">SomeTitleText-B</a></li>
</ul>
</div>
</div>
</li>
</ul>
</div>
"""
souped_html_data = BeautifulSoup(z, "html.parser")
div_detail_list = souped_html_data.find_all("div", "detail")
div_pic_list = souped_html_data.find_all("div", "pic")
for div_detail in div_detail_list:
details = div_detail.get_text()
for div_link in div_detail_list:
div_link_a = div_link.find_all('a')
for div_link_href in div_link_a:
div_link_href_url = div_link_href.get('href')
for div_pic in div_pic_list:
div_pic_a = div_pic.find_all('img')
for div_pic_a_src in div_pic_a:
div_pic_a_src_link = div_pic_a_src.get('src')
csv_writer.writerow([details, div_link_href_url, div_pic_a_src_link])
为了并行使用多个循环中的项,可以使用内置函数:
>>> seq0 = [1, 2, 3]
>>> seq1 = ['a', 'b', 'c']
>>> for s0, s1 in zip(seq0, seq1):
... print(f"{s0} - {s1}")
1 - a
2 - b
3 - c
然而,我觉得有些奇怪:您在三个不同的项目集上使用了三个循环,但您确定这三个项目集的长度相同吗?请给出一些示例,以便复制您的问题。请编辑代码以修复缩进-如果没有正确的缩进,则几乎不可能考虑使用四个空格对缩进进行注释。使用
z=“”(…)“”“
(多行字符串定义)进行编辑然后使用z.text
似乎很可能会引起AttributeError:'str'对象没有属性“text”
。你测试过了吗?谢谢你的指点。该.text是用于z=example.com的。然后,我用html示例替换了它,所以。文本必须被删除。是的,我确定。最后,所有结果的数量都将相同。
>>> seq0 = [1, 2, 3]
>>> seq1 = ['a', 'b', 'c']
>>> for s0, s1 in zip(seq0, seq1):
... print(f"{s0} - {s1}")
1 - a
2 - b
3 - c