Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环并添加到列表_Python_Selenium - Fatal编程技术网

Python 循环并添加到列表

Python 循环并添加到列表,python,selenium,Python,Selenium,我正在尝试创建要访问的URL的访问\u URL列表。 首先,我手动指定要访问的第一个urlself.br.get(url) 检查页面的页数,例如,它有40个页面,我会知道它有“count”,我只想在列表中将url的末尾从&page=2&page=3切换到40 这是我代码的循环部分。我只需要一种方法将所有页面添加到访问URL列表中 visit_urls=[] self.br.get(url) count = self.br.find_elements_by_xpath("//*[@class='c

我正在尝试创建要访问的URL的
访问\u URL
列表。 首先,我手动指定要访问的第一个url
self.br.get(url)
检查页面的页数,例如,它有40个页面,我会知道它有“count”,我只想在列表中将url的末尾从&page=2&page=3切换到40

这是我代码的循环部分。我只需要一种方法将所有页面添加到
访问URL
列表中

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)

这段代码经过了大量的研究,我被卡住了,所以任何帮助都将是伟大的

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

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

试着这样做:

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
变量始终指向同一个url,那么您将得到类似
http://www.mysite.com&page=1&page=2&page=3


确保url始终定义正确。

请尝试以下方法:

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
变量始终指向同一个url,那么您将得到类似
http://www.mysite.com&page=1&page=2&page=3


确保url始终被正确定义。

我假设一切正常,而您遇到的问题是根据您在“计数”中的发现生成所有url的数组

最简单的方法是,如果您已经知道URL,并且它的格式正确,例如:

url = 'http://www.thisisapage.com/somethinghere/dosomething.php?page=1'
如果是这种情况,请采取措施剥离1,获得一个“baseurl”来执行操作(具体操作方式取决于URL的类型及其形成方式):

之后,只需从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,可能有很多内容,因此您需要确保正则表达式捕获所需的所有内容。根据您提供的信息,我的问题非常简单。

我假设一切都正常,您遇到的问题是根据您在“count”中的发现生成一个所有URL的数组

最简单的方法是,如果您已经知道URL,并且它的格式正确,例如:

url = 'http://www.thisisapage.com/somethinghere/dosomething.php?page=1'
如果是这种情况,请采取措施剥离1,获得一个“baseurl”来执行操作(具体操作方式取决于URL的类型及其形成方式):

之后,只需从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,可能有很多内容,因此您需要确保正则表达式捕获所需的所有内容。根据您提供的信息,我的代码非常简单。

我真的不需要访问它的方法,只是循环部分是我需要的,它是selenium,我已经准备好了所有其他代码,只是尝试将其清理到列表中:)我真的不需要访问它的方法,只是循环部分是我需要的,它是selenium,我有所有其他代码准备好了,只是想把它清理到列表中:)你是对的,我有baseurl,它没有page=所以我只需要从page=2追加它,所以我想还需要计算-1,因为baseurl我会在循环之前添加它。你是对的,我有baseurl,它没有page=所以我只需要从page=2追加它,所以我想也是这样需要使count-1,因为baseurl将在循环之前添加它