Scraping Dynamic JavaScript Websites - Beautiful Soup Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.ย. 2024

ความคิดเห็น • 78

  • @oxylabs
    @oxylabs  2 ปีที่แล้ว +1

    Thank you for watching! We hope you find this video helpful! Please leave a comment if you have any questions. If you are interested in web scraping and tutorial videos, subscribe to our TH-cam channel: th-cam.com/users/Oxylabs

  • @abhijitboda
    @abhijitboda 2 ปีที่แล้ว +14

    This is gold guideline. Literally covered most of the cases

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      We're very delighted to read this!

  • @DigitalAlligator
    @DigitalAlligator ปีที่แล้ว +2

    This is right on spot, most other videos are not even close to mention all

  • @mehdiahmed7836
    @mehdiahmed7836 2 ปีที่แล้ว +7

    short detailed very informative, that's how a good tutorial is made
    Thanks

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Thank you so much!

  • @roystonfurtado
    @roystonfurtado 6 หลายเดือนก่อน

    Wow. Great Video! I was looking for a video that highlights realistic and efficient web scraping and this is it. Thanks.

  • @masterbe591
    @masterbe591 11 หลายเดือนก่อน

    Thanks for this video. Never thought about to use F12 and Network-Tab to find the source of websites data. greetings

  • @toshirv341
    @toshirv341 ปีที่แล้ว

    Thank you for the informative tutorial! I will probably try web scrapping over the next month, so I'll comment here again if I have any problem!

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Thanks for watching, and definitely reach out if you need any help!

  • @angellaz3869
    @angellaz3869 2 ปีที่แล้ว

    😭😭😭 Idk how to say thank you.. I've been searching for a help for this ajax stuff. this is the one I can say made my day

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      That's so sweet to hear! Glad you enjoyed it!

  • @vladimirantonov4506
    @vladimirantonov4506 ปีที่แล้ว

    Hello!
    And why do all parsers analyze the same site? Interesting different approaches...
    Thanks for the interesting example!

  • @ismaelperezmesa524
    @ismaelperezmesa524 ปีที่แล้ว

    thanks a lot for all these content you constantly share. I would like to ask you something: this tutorial example works if I want to deploy it on the web as an api for consuming it after? thank you so much

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Hey, we're glad you like our content! As for the tutorial, it's focused on showing how to build your own scraper. In case you want an easy way out, try Oxylabs Scraper APIs for free: oxy.yt/2iM

  • @dakooki
    @dakooki ปีที่แล้ว

    is this possible with website that requires a user input from the user for example adding a quantity or selecting a shipping service ?

  • @carlostoledoFLA
    @carlostoledoFLA 4 หลายเดือนก่อน

    Hi, Thank's for this video! For me, in a dynamic sites, using selenium for a get page source, don't work ! Still responding in javascript tag's. The path of the server request and response is: browser request -> server response -> javascript response -> api response -> browser ? Thank's

    • @oxylabs
      @oxylabs  4 หลายเดือนก่อน

      Thank you for the feedback. It’s difficult to say without seeing the code, but have you tried using different web drivers? The situation might change if you add some actions to the page. Also, it might be handy for you to check the code in textual form: oxylabs.io/blog/dynamic-web-scraping-python.

  • @shreyasoni1302
    @shreyasoni1302 ปีที่แล้ว

    How to get the data when the tag source is not None instead there is a file mentioned

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Hello! Thank you for asking :)
      If there is a src= attribute, then you need to get the file content by doing additional request to the url defined in src= attribute.
      source = soup.find("script")
      link_to_file = source["src"]

  • @user-xy4by2th9h
    @user-xy4by2th9h 2 ปีที่แล้ว

    Thanks for the video. Could you please explain where you took value 'h3 >a' for select at the end of the video?

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Hello. We’re glad you enjoyed it!
      The h3 > a syntax just tells Beautiful Soup to get a tags that are directly beneath h3.
      You can try going to the link displayed in the video (librivox.org/search/?q=time%20machine&search_form=advanced), right-click on any book title and select “inspect”. This should open the exact place where you can see that a is bellow h3. Have fun!

  • @mantasda1904
    @mantasda1904 8 หลายเดือนก่อน

    why are you not using requests-html library? Seems to achieve the same in a simpler way

    • @oxylabs
      @oxylabs  8 หลายเดือนก่อน

      Good point, thanks for the feedback!

    • @voqz6667
      @voqz6667 6 หลายเดือนก่อน

      it's dead

  • @mhrasoulian
    @mhrasoulian 2 ปีที่แล้ว +1

    It was very useful. Thank you!

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      We're very glad to you liked it!

  • @gianni_ari
    @gianni_ari 3 หลายเดือนก่อน

    hi! I was not able to install the chrome driver, do you have any suggestion?

    • @oxylabs
      @oxylabs  2 หลายเดือนก่อน

      Hi! Could you specify why you couldn't install the driver? Was there an error message of any sorts?

  • @drewgatch4488
    @drewgatch4488 ปีที่แล้ว

    Excellent video. Quick question - when I click Ctrl+U on the website, my source page looks different. I don't have anywhere and I have separating each section. Does this matter or was "script" just used to locate the data needed?

    • @oxylabs
      @oxylabs  ปีที่แล้ว +1

      Hello! If you're unable to locate in the source page of the website, do make sure that you visited "quotes.toscrape.com/js" (adding the `/js` at the end of the URL).
      This was important to ensure that you can follow the script parsing portion of the guide, as we then extracted information found in the tag.
      You can see the differences when comparing the source codes of "quotes.toscrape.com/js/" vs "quotes.toscrape.com"

  • @programmingpriest4862
    @programmingpriest4862 2 ปีที่แล้ว +1

    Thank you so much. much needed

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      We glad it helped!

  • @ivandechiara3415
    @ivandechiara3415 ปีที่แล้ว

    THANKS ! You saved my life! :)

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Happy we could help!

  • @ureshkayastha
    @ureshkayastha ปีที่แล้ว

    Can you sent the new version selenium 4 video for dynamic web scraping

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      We'll keep that in mind for our future videos :)

  • @Ned478
    @Ned478 2 ปีที่แล้ว

    6:14 line 10.
    Is that pathing to the folder with chromedriver or the chromedriver.exe? Either way mine wont work

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Hey. That's a path to a chromedriver executable. Your question is hard to answer since we don't know what kind of error you are getting. If it's a File Not Found error, you would need to make sure that the path leading to the chromedriver is correct - try to use a full path instead of a relative one if it is failing for you. Also, if you're running on Windows OS, the chromedriver should have an .exe at the end. Hope this helps!

  • @vbernard1
    @vbernard1 2 ปีที่แล้ว

    Hi, it was very good. Thanks. But I'm facing a problem: at the line 13, it is reported to me that "NameError: name 'data' is not defined". Any idea how to fix it?

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Hello! It seems that you’re trying to access a variable called data but it doesn't exist. Please double check the names for the variables you have defined. Also, there are couple of more scenarios when this error might get triggered - this article summarizes that quite well:
      www.geeksforgeeks.org/handling-nameerror-exception-in-python/

  • @python689
    @python689 ปีที่แล้ว

    Hello, help me please, how to get the text out "Wilson Tour Premier All Court 4B"
    soup = BeautifulSoup(html, 'lxml')
    title = soup.find('h1', class_='product--title')
    Tennis balls Wilson Tour Premier All Court 4B

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Hey, thanks for asking!
      There are a couple of ways (without modifying your find function)
      1.Retrieve a list of tag's children and select last one on the list. Strip the white space afterwards:
      title.contents[-1].strip()
      2. Retrieve the whole text of a title, split it by a double space and select last string on the list:
      title.text.split(" ")[-1]

  • @legit_nyel
    @legit_nyel ปีที่แล้ว

    This method is impossible if the script have src especially reCaptcha right?

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      The presented method works on any and all types of web pages, both static and dynamic. As a page containing the reCaptcha is a type of a dynamic page, you can read, extract and manipulate data that is present on the page. :) Hope this helps you!

  • @jjaemc7389
    @jjaemc7389 2 ปีที่แล้ว

    i'm soooooo appreciative of you😄

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Thanks for your feedback. It's much appreciated!

  • @anjifeldspar8804
    @anjifeldspar8804 ปีที่แล้ว

    Thanks for making this

  • @maikwurl1484
    @maikwurl1484 2 หลายเดือนก่อน

    Thank You

  • @Johnbrown-op5xt
    @Johnbrown-op5xt 2 ปีที่แล้ว

    Thank you so much. Great useful info.

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Glad you liked it!

  • @tarunbhardwaj121
    @tarunbhardwaj121 2 ปีที่แล้ว

    This video helped me a lot.

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว +1

      Thank you!

  • @capunzel5859
    @capunzel5859 ปีที่แล้ว

    Love the explanation, but also loved the music. Can you share the track id?

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Hey! So happy you enjoyed it :) The track is this one: Purple Planet Music - Corporate Planning

  • @KhalilYasser
    @KhalilYasser 2 ปีที่แล้ว

    Awesome. Thank you very much.

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Thank YOU for the support!

  • @kamaleshpramanik7645
    @kamaleshpramanik7645 2 ปีที่แล้ว

    Thank you very much Madam ...

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      You're welcome!

  • @muneebrehman7842
    @muneebrehman7842 2 ปีที่แล้ว

    You saved my day

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      We're very happy to hear!

  • @mihailazarescu1297
    @mihailazarescu1297 ปีที่แล้ว

    Great video! Thanks!
    Hi, could you demonstrate how to asynchronously request pages that require JavaScript rendering?

    • @oxylabs
      @oxylabs  ปีที่แล้ว +1

      That's a great idea for a future video, we'll keep that in mind, thanks 😊

  • @PresleyMcquade
    @PresleyMcquade 2 ปีที่แล้ว

    Awesome!

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Thank you!

  • @nwizugbesamson6718
    @nwizugbesamson6718 2 ปีที่แล้ว

    This is so perfect

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Thank you!

  • @filippodiconno9923
    @filippodiconno9923 2 ปีที่แล้ว

    9:15, what does line 10 do

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Hey! It defines a regular expression to match certain combinations of characters within a document. This one specifically is looking for whatever text thats between var data = and a new line.

  • @kumarsunil3219
    @kumarsunil3219 2 ปีที่แล้ว

    Hello. This is video seems very interesting and helpful but I need some more assistance if you can.

    • @oxylabs
      @oxylabs  ปีที่แล้ว

      Hey! how can we help you?

  • @benasvalancius
    @benasvalancius ปีที่แล้ว

    dekoju, naudinga!

  • @user-es3vq5cu4p
    @user-es3vq5cu4p 2 ปีที่แล้ว +1

    now doesn't work (crying~~~~~~~~)

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Hey. Could you specify where exactly it's not working for you? Maybe we can help!

  • @Grizzler231
    @Grizzler231 25 วันที่ผ่านมา

    The way she says html

  • @lorsco4107
    @lorsco4107 2 ปีที่แล้ว

    Awesome!

    • @oxylabs
      @oxylabs  2 ปีที่แล้ว

      Glad to hear!