我想找到这样的元素:
<input type="submit" value="login" class="button button-line navy" onclick="...">
Run Code Online (Sandbox Code Playgroud)
我正在使用这种方法,但它什么也没找到:
browser.find_by_css('.button .button-line .navy').first().click()
我在Python中使用Splinter库。我希望根据链接文本单击链接,但这不起作用。
该链接包含在源代码中,例如:
<a href="link here"><span style="color:#000000;">link text here</span></a>
Run Code Online (Sandbox Code Playgroud)
使用' browser.click_link_by_text('link text here')'会产生错误:
splinter.exceptions.ElementDoesNotExist:找不到带有文本链接的元素“此处链接文本”
我正在尝试使用以下代码从此页面中搜索每个搜索结果的名称:
url2 <- "http://www.truckandtrailer.ca/search.cfm?intIndustryID=2&searchtype=advanced&pageaction=showresults&bitNew=0&intCategoryID=30&intMakeID=0&intSelectProvinceID=&x=26&y=6"
results <- url2 %>%
html() %>%
html_nodes(".desc_title") %>%
html_text()
results
Run Code Online (Sandbox Code Playgroud)
然而它只是返回:
character(0)
Run Code Online (Sandbox Code Playgroud)
有关如何解决此问题的任何想法?感谢帮助!
我对网络抓取完全不熟悉,所以任何参考网站都会很棒.我对如何获取实际数据感到有些困惑.当我打印(theText)时,我得到了一堆html代码(应该是正确的).我如何从中获取价值呢?我是否必须使用正则表达式来获取实际的数值数据?
def getData():
request = urllib.request.Request("http://www.weather.com/weather/5day/l/USGA0028:1:US")
response = urllib.request.urlopen(request)
the_page = response.read()
theText = the_page.decode()
print(theText)
Run Code Online (Sandbox Code Playgroud) 所以我正在尝试使用jsoup来刮取Reddit的图像,但是当我刮掉某些subreddits如/ r/wallpaper时,我得到了429错误,我想知道如何解决这个问题.完全理解这段代码很糟糕,这是一个非常棒的问题,但我对此完全陌生.无论如何:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.io.*;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class javascraper{
public static void main (String[]args) throws MalformedURLException
{
Scanner scan = new Scanner (System.in);
System.out.println("Where do you …Run Code Online (Sandbox Code Playgroud) 出于道德原因,我想说的是,这里提到的网站内容是完全免费提供的,不需要注册,我也没有违反任何法律规则.
我通常开发用于私人使用的网络刮刀(我的意思是没有经济上的期望),原因之一是:它每天为我节省了大量时间.
在我正在抓取的当前网站上,当我连续请求30个网址时,服务器将我的连接识别为"异常流量",并显示Google的重新访问:
我想知道我应该采用什么方法来避免重新捕获并仍然没有问题地重定向URL.
唯一的条件是:没有代理/ VPN使用.
这是我从http标头中捕获的内容:
请求:
GET /rd/TdcfliKN0j9dT-bIMpo-GynUNR63kfnDsJn_YOP8uurTmlvy7C3oKnJtb1Mi-CI_fGsHJ72O49dM1IzXDCPNuPf3OfEb21w5hkGdV8ny__2u2pKo6yBgMbPCdAF-ti1uomfp3mWcB_K9M8PitpDMkg../x-Mad-VYWQz_lpphY5LN_fnkid__zqmI-i5AYJgziAl93kYhdvtlwVijRDmSGIifl-ouZki2eTWit7zi38raKiYkKtPqKSWftIfwFqIHD0bXua4z_LcrHQOnKwCWSNp0kJKcowVQSza8XJ88-TWJfA.. HTTP/1.1
Host r.plixid.com
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Referer http://plixid.com/2015/12/29/vinter-sleep-die-cold-winter-2015-mp3/
Cookie __cfduid=...; PHPSESSID=...; _ga=...; _gat=1
DNT 1
Connection keep-alive
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 301 Moved Permanently
Date Tue, 29 Dec 2015 11:42:47 GMT
Content-Type text/html; charset=UTF-8
Transfer-Encoding chunked
Connection keep-alive
X-Powered-By PHP/5.5.9-1ubuntu4.11
Cache-Control private, must-revalidate
Location http://novafile.com/0ubisyq06l8s
Pragma no-cache
Expires -1
Server cloudflare-nginx
CF-RAY 25c53e59f4d70db7-MAD
Run Code Online (Sandbox Code Playgroud)
我试过了什么?
使用随机用户代理. …
我在抓取网站时遇到了问题.目的是在某些日子里为伦敦的酒店取得价格.为此,我从booking.com加载以下网址,然后尝试搜索关键字.但由于某种原因,requests.get不会下载完整的网站.例如,下面的URL显示了浏览器中的酒店列表.每个都显示'总计'和价格.但是,在下面的代码中,site.find('Total')表示在字符串中找不到单词'Total',即使它在浏览器中可见.任何有关为什么会发生这种情
import requests
url='http://www.booking.com/searchresults.en-gb.html?label=gen173nr-17CAEoggJCAlhYSDNiBW5vcmVmaFCIAQGYAS64AQTIAQTYAQHoAQH4AQs;sid=1a43e0952558ac0ad0061d5b6523a7bc;dcid=1;checkin_monthday=4;checkin_year_month=2016-2;checkout_monthday=11;checkout_year_month=2016-2;city=-2601889;class_interval=1;csflt=%7B%7D;group_adults=7;group_children=0;highlighted_hotels=1192837;hp_sbox=1;label_click=undef;no_rooms=1;review_score_group=empty;room1=A%2CA%2CA%2CA%2CA%2CA%2CA;sb_price_type=total;score_min=0;si=ai%2Cco%2Cci%2Cre%2Cdi;ss=London;ssafas=1;ssb=empty;ssne=London;ssne_untouched=London&;order=price_for_two'
r=requests.get(url)
site=r.text
site.find('Total')
Run Code Online (Sandbox Code Playgroud) 我有一个项目,我必须刮掉50名演员/女演员的所有评级,这意味着我必须访问并刮掉3500个网页.这比预期的要长,我正在寻找一种加快速度的方法.我知道有像scrapy这样的框架,但我想在没有任何其他模块的情况下工作.是否有一种快速简便的方法来重写我的代码,或者这需要花费太多时间?我的代码如下:
def getMovieRatingDf(movie_links):
counter = -1
movie_name = []
movie_rating = []
movie_year = []
for movie in movie_links.tolist()[0]:
counter += 1
request = requests.get('http://www.imdb.com/' + movie_links.tolist()[0][counter])
film_soup = BeautifulSoup(request.text, 'html.parser')
if (film_soup.find('div', {'class': 'title_wrapper'}).find('a').text).isdigit():
movie_year.append(int(film_soup.find('div', {'class': 'title_wrapper'}).find('a').text))
# scrap the name and year of the current film
movie_name.append(list(film_soup.find('h1'))[0])
try:
movie_rating.append(float(film_soup.find('span', {'itemprop': 'ratingValue'}).text))
except AttributeError:
movie_rating.append(-1)
else:
continue
rating_df = pd.DataFrame(data={"movie name": movie_name, "movie rating": movie_rating, "movie year": movie_year})
rating_df = rating_df.sort_values(['movie rating'], ascending=False)
return rating_df
Run Code Online (Sandbox Code Playgroud) 有一个网站包含一个包含25个条目列表的页面,其中每个条目都是指向包含我需要的一些信息的页面的链接.我想进入列表页面,然后:1)点击链接到第一个条目2)检索所有的html 3)点击返回列表页面(有一个按钮)4)重复每个其他列表
我也想尽可能有效地做到这一点,我被告知这意味着利用承诺.这是我的代码草图,它不起作用:
var Nightmare = require('nightmare');
var nightmare = Nightmare({ openDevTools: true, show: true })
var Xray = require('x-ray');
var x = Xray();
var resultArr = [];
nightmare
.goto(hidTestURL)
.wait(2500)
.click('input[name="propertySearchOptions:advanced"]') //start navigating to listing page
.wait(2500)
.type('input[name="propertySearchOptions:streetName"]', 'Main')
.wait(2500)
.select('select[name="propertySearchOptions:recordsPerPage"]', '25')
.wait(2500)
.click('input[name="propertySearchOptions:search"]') //at listing page
.wait(2500)
.then(function(){
nightmare
.click('a[href^="Property.aspx?prop_id=228645"]') //first entry
.evaluate(function(){ //retrieve info
var resultArr = [];
resultArr.push(document.querySelector('html').innerHTML);
})
})
nightmare
.click('a[id="propertyHeading_searchResults"]') //return to listing page
.evaluate(function(){
return resultArr.push(document.querySelector('html').innerHTML); retrieve listing page info to show that …Run Code Online (Sandbox Code Playgroud) 我尝试使用rvest来获取该网站上的所有471个案例,但每次只能获得25个案例(无论列表是否扩展).任何帮助,将不胜感激.
library("rvest")
url <- "http://investmentpolicyhub.unctad.org/ISDS?status=100"
cases <- url %>%
read_html() %>%
html_nodes(xpath='//*[@id="cases-list"]') %>%
html_table()
View(cases)
Run Code Online (Sandbox Code Playgroud)
谢谢.
web-scraping ×10
python ×5
html ×2
r ×2
rvest ×2
splinter ×2
captcha ×1
dom ×1
html-parsing ×1
http ×1
httprequest ×1
java ×1
javascript ×1
jsoup ×1
nightmare ×1
promise ×1
recaptcha ×1
reddit ×1
web ×1