【发布时间】:2020-01-24 11:02:18
【问题描述】:
是否可以根据postcoede从地址定位器网站上抓取地址。 如果可以使用scrapy或任何其他python库,请帮助我。
我有一个 .csv 中的邮政编码列表,我正在尝试提取这些邮政编码的地址信息 并保存在 .csv 或 .txt 中
假设一个列表包含邮政编码
POSTCODE
HU9 5PX
OX5 1HX
我正在尝试以 .csv 格式获取输出
HU9 5PX Aarhus Karlshamn,King George Dock,HULL
OX5 1HX Abric Europe Ltd,Langford Locks,KIDLINGTON
我试图做这样的事情。
import logging
import os
import pandas as pd
import re
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.linkextractors.lxmlhtml import LxmlLinkExtractor
from googlesearch import search
logging.getLogger('scrapy').propagate = False
def get_urls(tag, n, language):
urls = [url for url in search(tag, stop=n, lang=language)][:n]
return urls
address_list = re.findall(a-z)
class MailSpider(scrapy.Spider):
name = 'address'
def parse(self, response):
links = LxmlLinkExtractor(allow=()).extract_links(response)
links = [str(link.url) for link in links]
links.append(str(response.url))
for link in links:
yield scrapy.Request(url=link, callback=self.parse_link)
def parse_link(self, response):
for word in self.reject:
if word in str(response.url):
return
html_text = str(response.text)
mail_list = re.findall('a-z', html_text)
但是上面的代码没有给出正确的结果。 错误:NameError:未定义名称“a” 请帮忙
【问题讨论】:
-
是的,应该可以。尽管您需要展示您的尝试并带着您遇到的更具体的问题来到这里。您还需要创建一个Minimal, Reproducible Example
-
分享一些数据作为示例以及您期望的最终结果。使您的问题陈述可重现。
-
@CypherX:嗨,我已经添加了预期输出的数据,我们可以使用这个网站获取地址吗? “royalmail.com/find-a-postcode”。请帮忙
-
address_list = re.findall(a-z)这是你得到 NameError 的地方,这需要是一个字符串所以...("a-z") -
@JoshuaNixon:谢谢....但仍然出现像 findall() 这样的错误需要至少 2 个参数(给定 1 个)...请帮助
标签: python web-scraping beautifulsoup scrapy