Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 美丽的汤-列表中所有项目的CSV结果_Python_Beautifulsoup_Python Requests - Fatal编程技术网

Python 美丽的汤-列表中所有项目的CSV结果

Python 美丽的汤-列表中所有项目的CSV结果,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,下面的代码段“有效”,但仅将第一条记录输出到CSV。我试图让它输出相同的输出,但是对于所有链接列表中枪URL列表中的每个枪 我对它所做的任何修改都会打印出相同的结果 或者,如果我制作一个gun_详细信息列表并尝试打印它,则会得到相同的一项输出 我如何将所有gun_详细信息标签和跨距打印到CSV中 导入csv 导入urllib.request 导入请求 从bs4导入BeautifulSoup 所有链接=[] url=”https://www.guntrader.uk/dealers/minster

下面的代码段“有效”,但仅将第一条记录输出到CSV。我试图让它输出相同的输出,但是对于所有链接列表中枪URL列表中的每个枪

我对它所做的任何修改都会打印出相同的结果

或者,如果我制作一个gun_详细信息列表并尝试打印它,则会得到相同的一项输出

我如何将所有gun_详细信息标签和跨距打印到CSV中

导入csv
导入urllib.request
导入请求
从bs4导入BeautifulSoup
所有链接=[]
url=”https://www.guntrader.uk/dealers/minsterley/minsterley-ranges/guns?page={}"
对于范围内的页面(1,3):
res=requests.get(url).text
soup=BeautifulSoup(res,“html.parser”)
对于soup.select中的链接(
'a[href*=“经销商/明斯特利/明斯特利靶场/枪/猎枪/”]
):
所有链接。附加(“https://www.guntrader.uk“+链接[”href“])
对于所有链接中的链接:
枪标=[]
gun_span=[]
res=urllib.request.urlopen(一个链接)
#res=requests.get(一个链接)
soup=BeautifulSoup(res,“html.parser”)
对于soup中的gun_详细信息,请选择(“div.gunDetails”):
对于枪的详细信息中的l。选择(“标签”):
gun_label.append(l.text.replace(“:”,“))
对于枪的详细信息中的s。选择(“span”):
gun_span.追加(s.text)
my_dict=dict(拉链(枪标签,枪跨度))
打开(“mycsvfile.csv”、“w”)作为csvfile:
writer=csv.DictWriter(csvfile,fieldnames=None)
对于my_dict.keys()中的键:
写入(f“{key},{my_dict[key]}\n”)

试着这样运行中间部分:

for a_link in all_links:
    gun_label = []
    gun_span = []

    res = requests.get(a_link)
    soup = bs(res.content, 'html.parser') #note it's 'res.content', not just 'res'
    for gun_details in soup.select('div.gunDetails'):
        for l in gun_details.select('label'):
            gun_label.append(l.text.replace(':',''))
    for s in gun_details.select('span'):
        gun_span.append(s.text)

    #this block is now indented differently - it's INSIDE the 'for' loop
    my_dict = dict(zip(gun_label, gun_span))
    with open('mycsvfile.csv', 'a') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=None)
        for key in my_dict.keys():
            csvfile.write(f"{key},{my_dict[key]}\n")

那么,让我们先试试这个:看看如果将
open('mycsvfile.csv','w')
更改为
open('mycsvfile.csv','a')
,会发生什么情况?结果相同。-以前把它放进了3次,但那是我在再次运行之前没有删除之前的csv多哈哈哈哈哈,真让我恼火,因为我没有把它放进去!漂亮的斑点!