Je suis en train de gratter les données de ce website, en utilisant httr
et rvest
. Après plusieurs fois de grattage (environ 90 - 100), le site me transfèrera automatiquement vers une autre URL avec captcha.comment traiter captcha lorsque le grattage web en utilisant R
c'est l'URL normale: "https://fs.lianjia.com/ershoufang/pg1"
c'est l'URL captcha: "http://captcha.lianjia.com/?redirect=http%3A%2F%2Ffs.lianjia.com%2Fershoufang%2Fpg1"
Quand mon araignée vient url accross captcha, il me dira d'arrêter et de le résoudre dans le navigateur. Ensuite, je le résous à la main dans le navigateur. Mais quand je lance l'araignée et envoie la demande GET
, l'araignée est toujours transférée à captcha url. Pendant ce temps dans le navigateur, tout va normalement, même si je tape dans l'URL du captcha, il va me renvoyer à l'URL normale dans le navigateur.
Même j'utiliser proxy, j'ai toujours le même problème. Dans le navigateur, je peux normalement naviguer sur le site, tandis que l'araignée continue d'être transféré à captcha url.
Je me demandais,
- est ma façon d'utiliser correctement proxy?
- Pourquoi l'araignée continue d'être transférée alors que le navigateur ne le fait pas. Ils proviennent de la même adresse IP.
Merci.
Ceci est mon code:
a <- GET(url, use_proxy(proxy, port), timeout(10),
add_headers('User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
'Connection' = 'keep-alive',
'Accept-Language' = 'en-GB,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,en-US;q=0.2,fr;q=0.2,zh-TW;q=0.2',
'Accept-Encoding' = 'gzip, deflate, br',
'Host' = 'ajax.api.lianjia.com',
'Accept' = '*/*',
'Accept-Charset' = 'GBK,utf-8;q=0.7,*;q=0.3',
'Cache-Control' = 'max-age=0'))
b <- a %>% read_html %>% html_nodes('div.leftContent') %>% html_nodes('div.info.clear') %>%
html_nodes('div.title') %>% html_text()
Enfin, je tourné vers RSelenium, il est lent, mais pas plus captchas. Même quand il apparaît, je peux directement le résoudre dans le navigateur.
C'est une fonction intentionnelle du site Web qui veut contrôler la manière dont vous utilisez ses données. Une fois que vous avez effacé le captcha sur votre navigateur, il a un cookie qu'il contient.Votre script R n'a pas cette "clé" à afficher quand il revient, donc il récupère le captcha. Et il est logique que le site fonctionne de cette façon parce que les scripts malveillants sur votre ordinateur pourraient essayer d'utiliser votre adresse IP pour gratter (ou même voler) des données et les envoyer ailleurs ... c'est la défense des sites contre ce type de comportement. Vous devriez étudier les termes du site pour être sûr de ne pas les violer en grattant. – sconfluentus