Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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_Web Crawler_Baidu Map - Fatal编程技术网

python爬虫程序中的错误

python爬虫程序中的错误,python,web-crawler,baidu-map,Python,Web Crawler,Baidu Map,我正在尝试使用一个python脚本从百度地图获取地址信息。代码如下: # -*- coding: utf-8 -*- import requests import re import csv import time def BusinessFromBaiduDitu(citycode = '287',key_word='筛网',pageno=0): parameter = { "newmap": "1", "reqflag": "pcmap", "biz": "1

我正在尝试使用一个python脚本从百度地图获取地址信息。代码如下:

# -*- coding: utf-8 -*-
import requests
import re
import csv
import time
def BusinessFromBaiduDitu(citycode = '287',key_word='筛网',pageno=0):
    parameter = {
    "newmap": "1",
    "reqflag": "pcmap",
    "biz": "1",
    "from": "webmap",
    "da_par": "direct",
    "pcevaname": "pc4.1",
    "qt": "con",
    "c": citycode,        # 城市代码
    "wd": key_word,       # 搜索关键词
    "wd2": "",
    "pn": pageno,         # 页数
    "nn": pageno * 10,
    "db": "0",
    "sug": "0",
    "addr": "0",
    "da_src": "pcmappg.poi.page",
    "on_gel": "1",
    "src": "7",
    "gr": "3",
    "l": "12",
    "tn": "B_NORMAL_MAP",
        # "u_loc": "12621219.536556,2630747.285024",
    "ie": "utf-8",
    # "b": "(11845157.18,3047692.2;11922085.18,3073932.2)",  #这个应该是地理位置坐标,可以忽略
    "t": "1468896652886"}

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36(KHTML, like Gecko) Chrome/56.0.2924.87Safari/537.36'}
url = 'http://map.baidu.com/'
htm = requests.get(url, params=parameter, headers=headers)
htm = htm.text.encode('latin-1').decode('unicode_escape')  # 转码
pattern = r'(?<=\baddress_norm":"\[).+?(?="ty":)'
htm = re.findall(pattern, htm)  # 按段落匹配

for r in htm:
    pattern = r'(?<=\b"\},"name":").+?(?=")'
    name = re.findall(pattern, r)
    #if not name:
    pattern = r'(?<=\b,"name":").+?(?=")'
    name = re.findall(pattern, r)
    print(name[0])  # 名称

    pattern = r'.+?(?=")'
    adr = re.findall(pattern, r)
    pattern = r'\(.+?\['
    address = re.sub(pattern, ' ', adr[0])
    pattern = r'\(.+?\]'
    address = re.sub(pattern, ' ', address)
    print(address)  # 地址

    pattern = r'(?<="phone":").+?(?=")'
    phone = re.findall(pattern, r)
    try:
        if phone[0] and '",' != phone[0]:
            phone_list = phone[0].split(sep=',')
        for number in phone_list:
            if re.match('1', number):
                print(citycode+name[0]+','+address+','+number)              
                writer.writerow((name[0], address, number))
except:
    continue
print(citycode + '  ' + key_word + '  ' + str(pageno))
#-*-编码:utf-8-*-
导入请求
进口稀土
导入csv
导入时间
def businessfromBaidudito(城市代码为'287',关键字为'筛网',pageno=0):
参数={
“新地图”:“1”,
“reqflag”:“pcmap”,
“商业”:“1”,
“发件人”:“网络地图”,
“da_par”:“direct”,
“pcevaname”:“pc4.1”,
“qt”:“con”,
“c”:城市代码,#城市代码
“wd”:关键字搜索关键词
“wd2”:“,
“pn”:页码,#页数
“nn”:第10页,
“db”:“0”,
“sug”:“0”,
“地址”:“0”,
“da_src”:“pcmappg.poi.page”,
“在凝胶上”:“1”,
“src”:“7”,
“gr”:“3”,
“l”:“12”,
“tn”:“B_法线图”,
#“u_loc”:“12621219.5365562630747.285024”,
“ie”:“utf-8”,
#“b:”(11845157.183047692.2;11922085.183073932.2)”#这个应该是地理位置坐标,可以忽略
“t”:“1468896652886”}
标题={
“用户代理”:“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_12_3)AppleWebKit/537.36(KHTML,如Gecko)Chrome/56.0.2924.87Safari/537.36”}
url='1〕http://map.baidu.com/'
htm=requests.get(url,params=parameter,headers=headers)
htm=htm.text.encode('latin-1')。decode('unicode_escape')#转码

pattern=r'(?参数未定义,原因有两个。您正在定义函数BusinessFromBaiduDitu,但没有调用它或从函数返回数据

下面是一个从函数返回数据的示例:

def test():
     a = {"Test1":"1"}
     return a

outside_a = test()
print(outside_a)

由于两个原因,参数未定义。您正在定义函数BusinessFromBaiduDitu,但没有调用它或从函数返回数据

下面是一个从函数返回数据的示例:

def test():
     a = {"Test1":"1"}
     return a

outside_a = test()
print(outside_a)

您收到的错误是什么?我收到的错误是:回溯(最近一次调用):文件“E:\map.py”,第41行,在htm=requests.get(url,params=parameter,headers=headers)中NameError:name'parameter'未定义您在Baidu()函数内定义参数是有原因的吗?如果您在该函数外定义参数,错误似乎会得到解决。您的另一个选项是在函数内返回参数,然后调用parameter=function()这是我在互联网上找到的一个脚本。我也不明白为什么变量“parameter”是在Baidu()中定义的。我曾尝试在它之外定义参数,但运行脚本却一无所获(没有任何输出)。我想脚本中一定还有其他问题。您收到的错误是什么?我收到的错误是:回溯(最近一次调用):文件“E:\map.py”,第41行,在htm=requests.get(url,params=parameter,headers=headers)name错误:名称“parameter”未定义您在百度()中定义参数的原因是什么函数?如果您在该函数外定义参数,错误似乎会得到解决。您的另一个选择是在函数内返回参数,然后调用parameter=function()。这是我在互联网上找到的一个脚本。我也不明白为什么变量“parameter”是在Baidu()内定义的。我尝试在它之外定义参数,但运行脚本不会得到任何结果(没有任何输出)。我猜脚本中一定存在其他问题。非常感谢!在添加“return”之后在外部调用中,运行脚本现在会给出一些地址输出。但是现在我得到另一个错误:回溯(最后一次调用):文件“E:\map.py”,第75行,打印(citycode+“”+key\u word+“”+str(pageno))NameError:name'citycode'未定义不确定是否已修复此问题,但您可能希望调用“c”而不是“citycode”或甚至“parameter['c']”非常感谢!添加“return”后在外部调用中,运行脚本现在会给出一些地址输出。但是现在我得到另一个错误:回溯(最后一次调用):文件“E:\map.py”,第75行,打印(citycode+“”+key\u word+“”+str(pageno))NameError:名称“citycode”未定义不确定是否已修复此问题,但您可能希望调用“c”而不是“citycode”或甚至“parameter['c']”