Python web抓取无法获取所有数据
我尝试通过多种方式访问orpi的网站,每个程序我都做了,每个请求只返回HTML上可用的数据,即导航栏和一些无用的信息,我试图获取任何住房的信息,但包括住房信息的部分没有被提取 这是我试图从中获取数据的页面 我想把任何东西都包括进去 请注意,我尝试了这些库,但没有获取任何内容:scrapy、beautifulsou、来自节点的请求、来自python的请求 以下是我尝试过的一些代码:Python web抓取无法获取所有数据,python,web-scraping,Python,Web Scraping,我尝试通过多种方式访问orpi的网站,每个程序我都做了,每个请求只返回HTML上可用的数据,即导航栏和一些无用的信息,我试图获取任何住房的信息,但包括住房信息的部分没有被提取 这是我试图从中获取数据的页面 我想把任何东西都包括进去 请注意,我尝试了这些库,但没有获取任何内容:scrapy、beautifulsou、来自节点的请求、来自python的请求 以下是我尝试过的一些代码: from bs4 import BeautifulSoup import requests source = re
from bs4 import BeautifulSoup
import requests
source = requests.get('https://www.orpi.com/recherche/buy?transaction=buy&resultUrl=&agency=&minSurface=&maxSurface=&newBuild=&oldBuild=&minPrice=&maxPrice=&sort=date-down&layoutType=mixte&nbBedrooms=&page=&minLotSurface=&maxLotSurface=&minStoryLocation=&maxStoryLocation=')
soup = BeautifulSoup(source.text, 'lxml')
print(soup.prettify())
#stories = []
#
#for a in soup.find_all('div', attrs={'class': 'u-mt-md'}):
# stories.append([a])
#
#print stories[0]
#article = soup.find('div', attrs={'class':'u-mt-md'})
#one_article = article.find('a', class_='u-link-unstyled c-overlay__link').text
#html = article.prettify()
#print(article)
用刮痧:
import scrapy
import pprint
class SpiderSpider(scrapy.Spider):
name = 'Orpi'
start_urls = ['https://www.orpi.com/recherche/buy?transaction=buy&resultUrl=&agency=&minSurface=&maxSurface=&newBuild=&oldBuild=&minPrice=&maxPrice=&sort=date-down&layoutType=mixte&nbBedrooms=&page=&minLotSurface=&maxLotSurface=&minStoryLocation=&maxStoryLocation=']
def parse(self, response):
data = {}
products = response.css('div.o-grid__col o-grid__col--8')
for product in products:
for p in product.css('div.o-grid__col u-flex u-flex-column'):
yield {
'Images' : p.css('img.c-overlay__zoom u-cover::attr(src)').getall(),
}
如果有其他浏览器,请替换
页面加载了javascript。您需要延迟才能得到结果。您的解决方案实际上是可行的,我想知道您是否知道为什么其他库不可能做到这一点?这样做吗?他们是故意阻止机器人吗?不,他们不是在阻止机器人。服务器向您发送带有脚本的html,然后浏览器执行脚本并显示结果。Selenium模拟浏览器并执行脚本。执行时间需要延迟。你为什么接受,然后又不接受,又一次接受我的回答?我不是故意的,我一看到就接受了,我不接受:=)
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox() # Or Chrome()
driver.get("https://www.orpi.com/recherche/rent?transaction=rent&resultUrl=&realEstateTypes%5B0%5D=maison&realEstateTypes%5B1%5D=appartement&realEstateTypes%5B2%5D=terrain&realEstateTypes%5B3%5D=immeuble&realEstateTypes%5B4%5D=stationnement&agency=&minSurface=&maxSurface=&newBuild=&oldBuild=&minPrice=&maxPrice=&sort=date-down&layoutType=mixte&nbBedrooms=&page=&minLotSurface=&maxLotSurface=&minStoryLocation=&maxStoryLocation=")
sleep(3)
html = driver.page_source
driver.quit()
# Do your stuff with html