所以我尝试构建一个非常基本的scraper,它从我的服务器上获取信息,使用这些信息创建一个链接,然后生成一个请求,解析后,它从解析的页面中获取一个链接,使用get请求将其上传回服务器。我遇到的问题是,它将从服务器上获取信息,创建一个链接,然后生成请求,并且根据那里的响应时间(不可靠的一致性),它将转储并重新开始向服务器发送另一个get请求。我的服务器逻辑的设计方式是,它正在拉取下一个需要处理的数据集,直到用这个数据集决定了一个行动方案,它将不断尝试拉取并解析它。我是个新手,需要帮助。我知道我的代码是错误的,但我还没有找到另一种方法,而不需要修改服务器代码和造成不必要的麻烦,不幸的是,我对scrapy或python也不是超级精通 我的启动请求方法:
name = "scrapelevelone"
start_urls = []
def start_requests(self):
print("Start Requests is initiatied")
while True:
print("Were looping")
r = requests.get('serverlink.com')
print("Sent request")
pprint(r.text)
print("This is the request response text")
print("Now try to create json object: ")
try:
personObject = json.loads(r.text)
print("Made json object: ")
pprint(personObject)
info = "streetaddress=" + '+'.join(personObject['address1'].split(" ")) + "&citystatezip=" + '+'.join(personObject['city'].split(" ")) + ",%20" + personObject['state'] + "%20" + personObject['postalcodeextended']
nextPage = "https://www.webpage.com/?" + info
print("Creating info")
newRequest = scrapy.Request(nextPage, self.parse)
newRequest.meta['item'] = personObject
print("Yielding request")
yield newRequest
except Exception:
print("Reach JSON exception")
time.sleep(10)
每次调用parse函数时,它都会执行所有逻辑,创建一个请求.get语句,它应该向服务器发送数据。如果到了最后,一切都会如愿以偿。我尝试了很多不同的方法来尝试让scraper循环并不断地向服务器请求更多信息。我想让铲运机无限期地运行,但当我无法离开计算机时,因为它在请求时被阻塞,这就失去了作用。有什么建议让刮板保持24/7运行而不使用启动请求功能中的愚蠢while循环?除此之外,有人能告诉我为什么它被困在请求的循环中吗?:(我很头疼,想解决这个问题,最后在一个论坛上让步了。。。在
你应该做的是从你的服务器url开始,通过产生请求对象不断地重试它。如果您的数据是新的,则分析它并安排您的请求:
相关问题 更多 >
编程相关推荐