Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 web抓取无法获取所有数据_Python_Web Scraping - Fatal编程技术网

Python web抓取无法获取所有数据

Python web抓取无法获取所有数据,python,web-scraping,Python,Web Scraping,我尝试通过多种方式访问orpi的网站,每个程序我都做了,每个请求只返回HTML上可用的数据,即导航栏和一些无用的信息,我试图获取任何住房的信息,但包括住房信息的部分没有被提取 这是我试图从中获取数据的页面 我想把任何东西都包括进去 请注意,我尝试了这些库,但没有获取任何内容:scrapy、beautifulsou、来自节点的请求、来自python的请求 以下是我尝试过的一些代码: from bs4 import BeautifulSoup import requests source = re

我尝试通过多种方式访问orpi的网站,每个程序我都做了,每个请求只返回HTML上可用的数据,即导航栏和一些无用的信息,我试图获取任何住房的信息,但包括住房信息的部分没有被提取

这是我试图从中获取数据的页面

我想把任何东西都包括进去

请注意,我尝试了这些库,但没有获取任何内容:scrapybeautifulsou、来自节点的请求、来自python的请求

以下是我尝试过的一些代码:

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