所以基本上它在我第一次运行蜘蛛时出于某种原因起作用了,但之后它只抓取了一个 URL。
-我的程序正在抓取我想从列表中删除的部分。
- 将零件列表转换为文件中的 URL。
- 运行并获取我想要的数据并将其输入到 csv 文件中。
问题:仅从一个 URL 获取输出不知道从这里去哪里 我检查了其他资源并尝试制作 start_request。结果还是一样。
所以基本上我怎样才能让它使用所有的 start_urls 并遍历它们中的每一个而不仅仅是最后一个?
这是蜘蛛:
import csv
import xlrd
import scrapy
wb = xlrd.open_workbook(r'C:\Users\Jatencio\PycharmProjects\testy\test.xlsx')
ws = wb.sheet_by_index(0)
mylist = ws.col_values(0)
print(mylist)
li = []
for el in mylist:
baseparts = el[:5]
url1 = 'https://www.digikey.com/products/en/integrated-circuits-ics/memory/774?FV=-8%7C774%2C7%7C1&quantity=0&ColumnSort=0&page=1&k=' + baseparts + '&pageSize=500&pkeyword=' + baseparts
li.append(url1)
final = list(set(li))
file = open('templist.csv','w+',newline='')
with file:
write = csv.writer(file, delimiter =',')
write.writerows(x.split(',') for x in final)
class DigikeSpider(scrapy.Spider):
name = 'digike'
allowed_domains = ['digikey.com']
custom_settings = {
"USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
}
with open('templist.csv') as file:
start_urls = [line.strip() for line in file]
def parse(self, response):
data = {}
parts1 = []
# parts=response.css('Table#productTable.productTable')
for p in response.css('tbody#lnkPart > tr'):
if p.css('td.tr-mfgPartNumber span::text').get() not in mylist:
continue
else:
parts1 = p.css('td.tr-mfgPartNumber span::text').get()
if p.css('td.tr-minQty.ptable-param span.desktop::text').get():
quantity = p.css('td.tr-minQty.ptable-param span.desktop::text').get()
quantity = quantity.strip()
cleaned_quantity = int(quantity.replace(',', ''))
else:
quantity = 'No quantity'
忽然笑
相关分类