Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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机械化/美化组抓取(在字典上迭代)_Python_Loops_Web Scraping_Beautifulsoup_Mechanize - Fatal编程技术网

Python机械化/美化组抓取(在字典上迭代)

Python机械化/美化组抓取(在字典上迭代),python,loops,web-scraping,beautifulsoup,mechanize,Python,Loops,Web Scraping,Beautifulsoup,Mechanize,我目前正在使用BS和Mechanize抓取一个站点,并且我能够让我的抓取器为一个实例工作,但是我想迭代字典,在它循环的每种类型中插入一个值。因为我完全是python的高手(我很抱歉),所以我很难理解如何做到这一点 有关一个值,请参见下面的代码: import mechanize import cookielib import csv from bs4 import BeautifulSoup as BS ids = csv.DictReader(open("csv_to_scrape.csv"

我目前正在使用BS和Mechanize抓取一个站点,并且我能够让我的抓取器为一个实例工作,但是我想迭代字典,在它循环的每种类型中插入一个值。因为我完全是python的高手(我很抱歉),所以我很难理解如何做到这一点

有关一个值,请参见下面的代码:

import mechanize
import cookielib
import csv
from bs4 import BeautifulSoup as BS

ids = csv.DictReader(open("csv_to_scrape.csv"))
persons = [person for person in ids]

br = mechanize.Browser()
br2 = mechanize.Browser()
cj = cookielib.LWPCookieJar()

br.set_cookiejar(cj)
br2.set_cookiejar(cj)

br.open('https://www.example.com')

br.select_form(nr=0)
br.form['licenseNumber'] = '012345' #This is the value that comes from my dict. 
br.submit()

for link in br.links(url_regex="/details"):
    req = br.click_link(url=link.url)
    html = br2.open(req).read()

soup = BS(html)
text1 = soup.find('div', {'class':'infobox append-bottom span-11'}).text
text2 = soup.find('div', {'class':'infobox append-bottom'}).text

f = open('output.csv', 'w')
x = '012345'
write_to_file = x + "," + '"""' + text2 + '"""' + "," + '"""' + text1 + '"""' + "\n"
write_to_unicode = write_to_file.encode('utf-8')
print x
f.write(write_to_unicode)
f.close()
我有一个基本的口述,看起来像这样:

[{'': '3008', 'name': 'Doe, John', 'date': '05-09-89', 'location': 'New York, NY', 'action': 'Dance', 'id': '012345'}, {'': '3080', 'name': 'Smith, John', 'date': '12-04-92', 'location': 'San Francisco, CA', 'action': 'Singing', 'id': '543210'}, etc.....
我试图用“id”进行迭代,将其放入下面的表单中,其中“licenseNumber”是,然后将其附加到另一个dict或将其写入csv


我知道这可能很简单(而且很基本),但我已经被困了两天(每天花10个小时)。任何帮助都将不胜感激。

在python中,从词典中获取条目非常容易。只需调用字典上的
get
方法,并将所需的键传递给它。例如:
dictionary.get(key)
。在您的情况下,您的
键将是您的'id'

因为您显示了一个字典列表,并且提到了迭代,所以这里有一行代码可以从字典列表中提取所有ID

list_of_ids = [_dict.get("id") for _dict in list_of_dicts]
就这样。现在,您可以迭代列表并将id输入到表单中——这可能意味着您需要为循环嵌套当前的
for
,但代码中不清楚,所以我不说


我希望这会有帮助,如果我完全误解了你的问题,我道歉

我不确定问题代码是否实际显示在代码示例中。它似乎不是?你能扩展和澄清你所说的“我试图用‘id’进行迭代,将其放入‘licenseNumber’所在的下表中,然后将其附加到另一个dict或将其写入csv”的意思吗?下面的答案有帮助吗?你能进一步解释你的问题吗?