scrapy Python从CSV抓取多个URL并导出到另一个CSV

8mmmxcuj  于 2022-11-09  发布在  Python
关注(0)|答案(2)|浏览(145)

我需要循环存储在CSV文件中的URL。我想从列出的URL中提取电话和ZIP。
请你如果能帮我,我感激不尽!


# read csv with just url per line

    with open('urls.csv') as file:
        start_urls = [line.strip() for line in file]

    def start_request(self):
        request = Request(url = self.start_urls, callback=self.parse)
        yield request

    def parse(self, response):

            html = response.body
            soup = BeautifulSoup(html, 'lxml')
            text = soup.get_text()

            phone = re.findall(r'\d{3}-\d{3}-\d{4}', html, re.MULTILINE)
            zipcode = re.findall(r'(?<=, [A-Z]{2} )\d{5}', html, re.MULTILINE)
            phn_1 = []
            zipcode_1 = []
´´´
e4eetjau

e4eetjau1#

你描述了你的目标,但没有提到目前哪个部分不起作用。
你写了这个:

def start_request(self):
        request = Request(url=self.start_urls, callback=self.parse)
        yield request

这并不是你想要的。特别是我希望Request()接受一个url而不是一个列表。另外,使用回调函数也可以,但可能比需要的更花哨。试试这个简化的方法:

for url in start_urls:
    self.parse(Request(url=url))

我相信这个表达式对你来说很合适:[line.strip() for line in file]。为了强调它完全是关于处理换行符的,使用

line.rstrip()

而不是

line.strip()
0qx6xfy6

0qx6xfy62#

谢谢你的回答!我可以循环,但我不能得到的电话和拉链,而我正在循环后得到一个CSV的数据。任何帮助,我将不胜感激!

相关问题