繁体   English   中英

如何从PC上的文本文件读取URL?

[英]How Can I read URLs from text file located on my PC?

我有一个python代码,可从网站上抓取数据。 这段代码可以正常工作,但是我想将URL源更改为桌面上的文本列表。 我的文本文件中的网址都是一行。 您如何建议我应阅读此文件并遍历URL? 在此先感谢您的时间。

import csv
import requests
from bs4 import BeautifulSoup
csv_file = open('cms_scrape.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['name', 'link', 'price'])
for x in range(0, 70):
    try:
        urls = 'https://www.meisamatr.com/fa/product/cat/2-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DB%8C.html&pagesize[]=24&order[]=new&stock[]=1&page[]=' + str(x + 1) + '&ajax=ok?_=1561559181560'
        source = requests.get(urls).text
        soup = BeautifulSoup(source, 'lxml')
        print('Page: %s' % (x + 1))
        for figcaption in soup.find_all('figcaption'):
           price = figcaption.find('span', {'class': 'new_price'}).text.strip()
           name = figcaption.find('a', class_='title').text
           link = figcaption.find('a', class_='title')['href']
           print('%s\n%s\n%s' % (price, name, link))
           csv_writer.writerow([name, link, price])
    except:
        break
csv_file.close()

如果您在该文本文件中没有太多的URL(在我的示例中为urls.txt ),则以下代码片段应该可以满足您的要求。

import requests

# read all URLs at once
with open("urls.txt", "r") as f:
    urls = f.read().splitlines()

# and loop over them
for url in urls:
    try:
        source = requests.get(url).text
    except Exception as e:
        print(e)
        break

假设您有一个名为input.txt的文件,看起来像这样

url1
url2
url3
url4
.
.
.

然后,我们将简单地打开此input.txt文件,然后以换行符('\\ n')分割。 这应该给我们一个URL列表。 喜欢

['url1','url2','url3']

然后,您可以简单地遍历它并爬网网页。

这里有一个

# crawler.py

import csv
import requests
from bs4 import BeautifulSoup

with open('input.txt','r') as f:
  urls = f.read().split() # here we get a list of urls 

csv_file = open('cms_scrape.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['name', 'link', 'price'])
for url in urls:
    try:

        source = requests.get(url).text
        soup = BeautifulSoup(source, 'lxml')
        for figcaption in soup.find_all('figcaption'):
           price = figcaption.find('span', {'class': 'new_price'}).text.strip()
           name = figcaption.find('a', class_='title').text
           link = figcaption.find('a', class_='title')['href']
           print('%s\n%s\n%s' % (price, name, link))
           csv_writer.writerow([name, link, price])
    except Exception as e:
      print(e)
      break


csv_file.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM