我正在尝试创建要访问的网址visit_urls
的列表。
首先我手动指定第一个访问self.br.get(url)
的网址
并检查页面的页面数量,例如它有40页,我会知道它有“计数”,我只想用& page = 2& page = 3切换到网址的结尾列表中有40个。
这是我的代码的循环部分。我只需要一种方法将所有页面添加到visit_urls
列表
visit_urls=[]
self.br.get(url)
count = self.br.find_elements_by_xpath("//*[@class='count']").get_attribute("innerHTML"):
for (here up to count)
self.visit_urls.append(url + need to append this also to the end of the first url &page=2-count)
这段代码是经过大量研究而来的,我被困住了,所以任何帮助都会很棒!
答案 0 :(得分:3)
尝试这样的事情:
visit_urls=[]
self.br.get(url)
count = self.br.find_elements_by_xpath("//*[@class='count']").get_attribute("innerHTML")
for page_number in xrange(1, count+1):
url = '{url}&page={page_number}'.format(url=url, page_number=page_number)
visit_urls.append(url)
假设url
永不改变,这将有效。也就是说,如果url
变量始终指向同一个网址,您最终会得到http://www.mysite.com&page=1&page=2&page=3
确保始终正确定义网址。
答案 1 :(得分:1)
我假设一切正常,您遇到的问题是根据您在“计数”中的调查结果生成所有网址数组。
最简单的方法是,如果您已经知道了URL,并且它的格式正确,例如:
url = 'http://www.thisisapage.com/somethinghere/dosomething.php?page=1'
如果是这种情况,请执行某事以剥离1,获取“baseurl”以进行操作(具体如何执行此操作取决于哪些URL及其形成方式):
baseurl = 'http://www.thisisapage.com/somethinghere/dosomething.php?page='
之后,只需从n循环到count,将当前迭代附加到baseurl。
通常情况下,如果您要使用复杂的URL或可能包含安全令牌等的动态URL,使用正则表达式会更容易。
为此,你可以使用类似的东西:
import re
m = re.match(r'^(.*)(page=\d+&?)(.*)$', url)
for i in range(2, count):
self.visit_urls.append(m.group(1) + 'page=%i' % i + m.group(3))
当然,既然你正在使用一个URL,那可能是很多东西,那么你将会看到正则表达式捕获它需要的所有东西。根据您提供的信息,我很简单。
答案 2 :(得分:0)
Python中一个非常基本的webcrawler:
import re, urllib
print "Enter the URL you wish to crawl.." #
print 'Usage - "http://example.com/"'
myurl = input("@> ")
for i in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(myurl).read(), re.I):
for ee in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(i).read(), re.I):
print ee