python跳轉代碼
1. 如何在scrapy框架下,用python實現爬蟲自動跳轉頁面來抓去網頁內容
(1)一種是像我之前爬蟲新京報網的新聞,下一頁的url可以通過審查元素獲得,第一頁的網址是http://www.bjnews.com.cn/news/list-43-page-1.html
在第一頁的時候,下一頁按鈕的審查元素是
我們通過獲取next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]
,便可以得到下一頁的url,next_page = "http://www.bjnews.com.cn" + next_pages,
這一部分的完整代碼為:
page_link=set() #保存下一頁頁面url
content_link=set() #保存頁面內所有可獲得的url
rules={'page':LinkExtractor(allow=(r'^http://www.bjnews.com.cn/\w+/2016/\d{2}/\d{2}/\d{6}.html
))}
start_urls={'http://www.bjnews.com.cn/news/list-43-page-1.html'}
def parse(self, response):
#爬取一個頁面內的所有url鏈接
for link in self.rules['page'].extract_links(response):
if link.url not in self.content_link:
self.page_link.add(link.url)
yield scrapy.Request(link.url, callback=self.parse_item)
#自動獲取下一頁的url
next_pages = response.xpath('//div[@id="page"]/a[@class="next"]/@href').extract()[0]
if next_pages:
next_page = "http://www.bjnews.com.cn" + next_pages
self.page_link.add(next_page)
yield scrapy.Request(next_page, callback=self.parse)
(2)第二種情況,就是在下一頁的審查元素中沒有提供url鏈接,需要自己分析,在這里依然舉個例子,比如搜狐新聞http://news.sohu.com/guojixinwen.shtml,該頁中下一頁按鈕的審查元素是:
我們不能通過href來直接過得下一頁的url,需要自己手動獲得,那現在我們來分析
第二頁的url:http://news.sohu.com/guojixinwen_5230.shtml,第三頁的http://news.sohu.com/guojixinwen_5229.shtml,最後一頁的http://news.sohu.com/guojixinwen_5132.shtml,由此可以分析出這一共100頁的url,是http://news.sohu.com/guoneixinwen_"+i+".shtml",其中i是從5230到5132倒序排列的,也就是說通過for循環,就可以獲得這100頁的所有url,完整代碼如下:在這里給大家加一個新的方法的使用start_request,該方法就是子定義start_urls,把所有自定義的url放到page_link中,self.make_requests_from_url方法會自動獲取裡面的請求
2. python網頁跳轉的問題
1.用工具抓取分析網頁跳轉的內部執行邏輯。
2.然後用python代碼實現此邏輯。
3.所有的內容,我早就幫你寫好教程了。
自己去看就可以了:
如何用Python,C#等語言去實現抓取靜態網頁 模擬登陸網站
(此處不給貼地址,請用google搜標題,即可找到地址的)
3. python中模擬登陸成功如何跳轉到主頁
參考這個可以了,http://www.bubuko.com/infodetail-699326.html
#以post的方法訪問登陸頁面,訪問之後cookieJar會自定保存cookie
opener.open(login_page,data)
#以帶cookie的方式訪問頁面,這樣跳轉主頁就可以了
op=opener.open(url)
附上部分代碼如下:
def login(self,login_url):
data = {
'email': self.email,
'password': self.passwd
}
post_data = urllib.urlencode(data)
req = urllib2.Request(login_url,post_data, self.headers)
response = self.opener.open(req)
content = response.read()
pagesoup = BeautifulSoup(content,fromEncoding = 'utf-8')
return pagesoup
def recent_visit(self,soup):
title = soup.html.head.title
print title.renderContents().strip()
app_link_url = soup.find('li',{'class':'app-nav-item app-homepage'}).a['href']
print app_link_url #人人網主頁
app_link_op = self.opener.open(app_link_url)#跳轉主頁
app_link_soup = BeautifulSoup(app_link_op.read(),fromEncoding = 'utf-8')
4. 如何在python代碼中跳轉到函數頭
這里利用《python編程入門》書中的例子作為事例說明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def get_omelet_ingredients(omelet_name):
ingredients = {"eggs":2,"milk":1}
if omelet_name=="cheese":
ingredients["cheddar"]=2
elif omelet_name=="western":
ingredients["jack_cheese"]=2
ingredients["ham"]=1
ingredients["pepper"]=1
ingredients["onion"]=1
elif omelet_name=="greek":
ingredients["feta_cheese"]=2
ingredients["spinach"]=2
else:
print("That's not on the menu, sorry!")
return None
return ingredients
def make_food(ingredients_needed, food_name):
for ingredient in ingredients_needed.keys():
print("Adding %d of %s to make a %s" %(ingredients_needed[ingredient], ingredient, food_name))
print("Make %s" %food_name)
return food_name
def make_omelet(omelet_type):
if type(omelet_type)==type({}):
print("omelet_type is a dictionary with ingredients")
return make_food(omelet_type, "omelet")
elif type(omelet_type)==type(""):
omelet_ingredients = get_omelet_ingredients(omelet_type)
return make_food(omelet_ingredients, omelet_type)
else:
print("I don't think I can make this kind of omelet: %s" % omelet_type)
"""利用make_omelet函數調用get_omelet_ingredients和make_food函數的值"""
omelet_type=make_omelet("cheese")
5. python中如何實現session過期時自動跳轉到登錄頁面
一. 建立基本過濾器
建立一個過濾器涉及下列五個步驟:
1)建立一個實現Filter介面的類SessionFilter 。這個類需要三個方法,分別是:doFilter、init和destroy。doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清除。
2)在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。
3)調用SessionFilter 對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
4)對相應的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。
5)禁用激活器servlet。防止用戶利用預設servlet URL繞過過濾器設置。
6. python 怎麼處理網頁跳轉
先分析下網頁跳轉的內部邏輯,比如用ie9就可以很好的進行跳轉邏輯分析,主要看看跳轉都提交了什麼post data,然後用代碼模擬這個post就行了。
7. python怎樣跳過代碼執行
Python跳過代碼,執行就是不能的,因為你只能夠通過他的代碼,然後才能夠進行運行。
8. 如何在scrapy框架下,用python實現爬蟲自動跳轉頁面來抓去網頁內容
Scrapy是一個用Python寫的Crawler Framework,簡單輕巧,並且非常方便。Scrapy使用Twisted這個非同步網路庫來處理網路通信,架構清晰,並且包含了各種中間件介面,可以靈活地完成各種需求。Scrapy整體架構如下圖所示:
根據架構圖介紹一下Scrapy中的各大組件及其功能:
Scrapy引擎(Engine):負責控制數據流在系統的所有組建中流動,並在相應動作發生觸發事件。
調度器(Scheler):從引擎接收Request並將它們入隊,以便之後引擎請求request時提供給引擎。
下載器(Downloader):負責獲取頁面數據並提供給引擎,而後提供給Spider。
Spider:Scrapy用戶編寫用於分析Response並提取Item(即獲取到的Item)或額外跟進的URL的類。每個Spider負責處理一個特定(或一些網站)。
Item Pipeline:負責處理被Spider提取出來的Item。典型的處理有清理驗證及持久化(例如存儲到資料庫中,這部分後面會介紹存儲到MySQL中,其他的資料庫類似)。
下載器中間件(Downloader middlewares):是在引擎即下載器之間的特定鉤子(special hook),處理Downloader傳遞給引擎的Response。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能(後面會介紹配置一些中間並激活,用以應對反爬蟲)。
Spider中間件(Spider middlewares):是在引擎及Spider之間的特定鉤子(special hook),處理Spider的輸入(response)和輸出(Items即Requests)。其提供了一個簡便的機制,通過插入自定義的代碼來擴展Scrapy功能。
9. Python嵌套頁怎麼跳轉到頁面內,然後定位元素
從問題描述看,推測是使用類似 python+selenium這種模擬操作。
提供提示供參考如下:
從圖片看,是使用的 iframe框架網頁元素進行嵌套,對此, selenium提供了一些專門的操作函數,通常使用示例代碼如下:

切換到的 iframe後,就可以定位操作此框架中的元素了。
10. Python怎麼跳到指定行
Python不像C有goto語句。
跳不了的。
建議用while循環
while True:
# 執行功能性代碼
# 判斷條件
if True:
break
這樣,就能實現符合代碼條件時繼續,不符合時再次運行功能性代碼
相當於跳轉到此功能性代碼。
