#i'm not even on mobile did they start limiting images on desktop???
Explore tagged Tumblr posts
Note
I don't know if you'll answer but I need to know the lore behind sexy times with Wangxian, like is it a fanfic? why do people hate the author??
It was the longest mdzs fic posted during its time in 2021 and gained extreme notoriety for its absurdly long tag list, frequent update schedule that consistently forced anyone scrolling any of its tags to see it at the top of their page, and escalating poor, racist, and trolling authorial behavior that ultimately culminated in the author virtual1979 being suspended from ao3 for a month because she posting an author's note saying she hoped that all her haters would contract covid and die. She deleted the fic from ao3 a little while after this happened, ig bc she wasn't getting enough attention anymore, but allegedly the thing's still up on dreamwidth under strict friendslock. The fan lore article goes pretty in depth about it:
The best summary for why it pissed people off so much is really just showing you these screenshots of what the fic looked like towards the end of its life on desktop and mobile (be warned opening the full image):
From my personal experience:
from 2019 up until around 2021 the fic really was just a normal-ish, if very strangely written and kinky, wangxian porn fic about them basically just fucking around post canon and enjoying day to day life. It updated pretty frequently and had a fair amount of tags because the author was literally just tagging anything that she wrote. But like the first few hundred, maybe even a thousand tags were pretty accurate to what the fic was because of that, and were relatively manageable for the first few years that it didn't pick up any attention really.
At some point in 2021 when cql was really starting to blow up online and the tag count was starting to pile up to the point of annoyance, the fic started receiving some comments that were just like "hey can you try to cut down on tags, I don't think it's necessary to be so specific as to tag 'Korean food' or 'eggs' or whatnot". The author did not share this idea, evidently, and instead built a grudge against commenters who would tell her to delete tags, subsequently adding more and more as time went on.
As the tag count and updates increased, the content of the fic did too-- it got a lot, lot weirder. I'm sure someone's saved it all somewhere but for reference it spun out into what I can only describe as like if Rick and Morty's plot was cut to be just the parts of the show with underage/incest plotlines with All Tomorrows level sex dystopian world building exclusively to elicit the most visceral audience reaction possible. Around this time is when more people started to notice the fic and its escalating tag issues, leading them to leaving more comments complaining about it, leading to the attention seeking author spitefully adding more tags. Around this time is when she also started adding fake tags that didn't apply to the story whatsoever (sorry to disappoint, "talking vagina" was one of those. I did check) just to boost the count, take up more space on people's screens, and bait people into commenting hate for attention.
By this time, it had become a fandom-wide annoyance as she had begun to tag entirely unrelated ships, therefore putting the near-daily updating titanic of a fic at the top of any mdzs-related tag. People were outraged about this, and calls came for ao3 to step in. Ao3 waffled around for a bit as there was no official rule at the time that imposed a tag limit, so there wasn't established ground to ban virtual1979 (who btw many people suspected of being 40 whole years old due to the username and allegedly some other internet sleuthing on Facebook or something). Meanwhile, she began to tag other fandoms-- tgcf, svsss, BTS, basically anything that would get a lot of attention and draw hate with the advent of The Monstrosity suddenly drowning out all other recently updated fics of the targeted fandoms.
People had been trying to retaliate without ao3 action, though, by coding their own themes/skins that would allow someone to block a user or work and other fic writers made their own parody, the "bland times with wangxian" collection, which were minimally tagged sfw shortfics typically featuring wangxian just doing laundry or things like that. A good amount of them were actually like just fics where wwx would explain to lwj how to install custom ao3 themes and block fics that were taking up too much space on his screen. Imo it was pretty funny, but these also sparked some controversy as people disagreed with fighting annoyance with more annoyance to people trying to find content.
Either shortly before or after ao3 staff said they'd step in due to an insane amount of reports and backlash, I forgot which atp, virtual1979 began perhaps the worst tagging spree of the fic's life by changing the title, many of the tags, and the summary to a slew of racial slurs, sexually explicit imagery, and other generally offensive statements. I'm pretty sure this came after the fic was temporarily hidden once, as this update gained considerably less attention than the rest of the tagging saga, but people were still rightfully pissed about it. Ultimately, like I mentioned before, the author was then suspended for a month for wishing covid and death on her haters, and attention seemed to die down during this time to the point where she didn't really fight much more when her suspension ended and deleted her account and the work shortly after. Again she seems to have moved to dreamwidth, but most have forgotten her and I'm not sure if her presence is public at all on there. But that's the story of the worst mdzs fic ever written
119 notes
·
View notes
Note
Heyy, can you talk/write about Dick’s friendship with Raven? It’s a little underrated and would like to know more canon about them.
YES! Of course I can!!
I'll start at the beginning, like every good friendship, we start with some dream invasions.
[Image ID: Dick sits up in bed with a hand on his head. He's shirtless. Dick: "Every night for a week, that same horrible dream... always a New Titans... fighting that same awful menace... for pity's sake-- what's happening to me?" The next panel shows Dick looking confused. Raven (off panel): "What you have experienced, Richard Grayson, are hardly nightmares! Indeed, they are merely premonitions of things to come!" Raven dimension shifts into view with clouds of smoke and her cape billowing behind her. Dick (off panel): "You? You're one of the girls in my dreams... that witch they call Raven!" Raven: "Hardly a witch. I am your friend... and I am your future. There are unknown forces at work... forces which demand that a new Teen Titans be formed!" Raven presses a hand to her chest. Raven: "I invaded your dreams only so that you may come to know me... and to know that when, at last, I appeared before you it was to seek your aid!" End ID]
New Teen Titans (1980) #1
So basically she gave him night terrors for a bit and was like come form the titans and Dick was like you know, college sucked and I dropped out and I'm not doing anything else right now, guess I'm in. Also this moment happens
[Image ID: Raven hands a telephone to Dick who is still in his pajama pants. Raven: "Take this, speak to your friend. Convince him to join our New Titans." Dick: "Speak to who? You just picked up the tele--" In the next panel Dick holds the phone with his shoulder while taking out his Robin costume. Dick: "Huh? Wally? Wally West? Is that you?" Wally: "You oughtta know, Robin. It's your dime. What's up?" Dick: "I--I'm not sure... but it's about the Teen Titans..." End ID]
And from here we have Raven going around and forming the team, everyone meets up and they go save Kory together. At this point their relationship also has a lot of this going on:
[Image ID: Raven dissipates into shadows while Dick looks back, fastening his Robin cape around his neck. Raven: "But you must find Wonder Girl." Dick: "Hey! Waitasec! I don't know where she-- nuts! She disappeared! ...just like in my... nightmare." End ID]
Basically Raven is just like *poof* "here's information you need to know *poof* and Dick is like "excuse me wtf sir" for a bit. Dick is pretty tired of this routine after a couple issues and tries confronting Raven about it.
W[Image ID: Raven poofs into existence in the first panel and the Titans all look at her. Narrator: "There is silence as Koriand'r's voice trails off. But then the silence is replaced with a cold, crisp electric crackle as..." Raven: "My friends, I have need of you. There is an emergency..." Dick: "Raven?" Dick grabs Raven by the shoulder and points at her. Dick: "Just hold it right there. You keep popping up out of nowhere, ordering us about. But I want answers... before I take another step I want to know who you are and--" Dick gets punched by a flash of light with a "Swok" sound effect. Wally (off panel): "Leave her alone! How dare you question her?" Dick: "Wha--?" End ID]
The New Teen Titans (1980) #3 Dick doesn't immediately trust Raven unconditionally despite her attempts to come to him in dream form to make him trust her. He's basically like "I'll help you, but also what the fuck is going on". Wally on the other hand is aggressive here because Raven made him fall in love with her so he would join the team. So he is very defensive of Raven. (Note: this was later expanded upon so Raven doesn't seem awful for playing with his emotions). Anyways, back to Dick and Raven, he apologizes for treating her roughly
[Image ID: Dick breaks through a window with Kory zooming down through the window next to him. Raven poofs in with smoke behind her. Dick: "Okay, Raven, I apologize. You were right. I may not know everyone here, but I sure know a crumb like Doctor Light!" Raven: "Apologies are not necessary. We're all working together." Dick (internally): "I sure hope so." Wally (off panel): "Yeah? Then what happened to Cyborg? Where is he?" End ID]
As you can see Dick still doesn't fully trust her - she still hasn't revealed her true intentions about why she assembled the team or explained why she keeps popping up and being like "hey come this way kids". And she also just like poofs away when they're losing which doesn't inspire confidence either.
[Image ID: Dick looks back towards Raven who's dissipating into smoke, he's surrounded by gas. Dick: "*choke* ...limbs...so tired... wanna sleep... *choke* *gasp* *gasp* need fresh air... got to... get outta-- Raven? Raven, where are you going?" End ID]
Anyways the next time Dick demands answers, Raven explains that Trigon is coming and he's like "dimensional demon? oh got it, yep that makes sense". Then the Titans - Raven because she doesn't engage in fights at this point get their asses kicked by the Fearsome Five, which they then promptly forget because Psimon (one of the members of the Fearsome Five) is mentally manipulating them. So Dick is back to accusing her of disappearing again and Raven explains Trigon again. And in a leap of mind controlled logic Dick goes "we must kill the justice league" because Raven mentioned they would need to defeat them last time because the league didn't understand that Trigon was a threat. And Raven is pretty much like... "whoops" and then when the titans start fighting the justice league she makes them hallucinate the league dying and they stop. Then she brings them to Azarath where there's a ceremony going on to seal Trigon. Trigon is not sealed and more exposition later, it's revealed Raven went to the Justice League for help, but was turned down because she gave Zatana bad vibes. Which leads to the Titans ditching Raven
,[Image ID: The Justice League walks away from Raven as she reaches out to them. Dick's pixie boots and Donna's boots are shown walking away from Raven in the front. Raven: "Please, I need all of you beside me." A closeup of Raven's face shows her crying. Raven: "Don't you understand? Our world could be doomed! Please... believe me... you must believe me..." End ID]
The New Teen Titans #4
At this point the Titans are forced to confront how they feel about Raven, whether or not they think she's lying and what they should do about this whole situation. They regroup at the Tower and talk things out for a bit, Wally's pissed because he's realized Raven manipulated him, Vic keeps Wally from punching Dick again, Kory's like I don't think she was lying, and Gar's an idiot. And after they debate for a bit, Raven calls them for help via sending her soul self to them, and surprisingly Dick's the first one to declare he's going to help her.
[Image ID: Vic stands behind Dick. Dick: "...I'm going to go with my hunch. I think Raven's telling the truth." Vic: "I'm stayin' here." Dick: "No one owns you, Vic. Do what you want. But I'm going." The other Titans appear in the background, Gar turning into an owl. Kory: "And I will join you, Robin." Donna: "We're all going." Gar: "Yeah. There's nothing on TV tonight anyway." End ID]
And he knows he's being irrational here. He pretty much has no reason to trust Raven, but he cautiously does. Vic is also coming, he just stayed behind to help Wally with emotions for a hot minute. At this point they reach the next phase of their relationship which I like to call, the "Dick helps Raven stand up" phase.
[Image ID: Dick has an arm around Raven's shoulder as she's bent over, Dik's turned to look at an orange demon who's cut off. End ID]
In which Dick is still confused by Raven but is starting to care for her.
[Image ID: Dick looks back at a pale faced Raven. Dick (internally): "I already know the answer, but I've got to ask her anyway." Dick (out loud): "Raven, we need you in this battle. Will you join us?" Raven: "I cannot, Robin. Please don't ask me." Dick (internally): "I can't believe Raven's a coward. But why won't she join us? This is her fight." End ID]
I hit the image limit at this point. But from here the Titans end up fighting Trigon, losing, Raven gives herself up to try and spare the world, the Titans learn more about Azarath and Raven's past, and Raven is pretty much firmly cemented as their friend by the end of the arc. And that's how these two became friends for the first time and it's a friendship that's lasted till now, too. They were recently on a team in Titans Rebirth together, and she's made cameos in the Nightwing book recently. There's a bunch more panels I wanted to talk about so, to be continued...
#*roundabout starts playing*#asks#anon#dick grayson#raven#ntt#new teen titans#i had so much more i wanted to talk about but ended up just giving an abridged description of the first arc#i'm not even on mobile did they start limiting images on desktop???#rip#teen titans#titans#image described
96 notes
·
View notes
Text
Easy Google Search Result API with Zenserp (Sponsored)
No matter how much experience I gain in this industry, one task I continue to fail at is building an accurate, flexible, and maintainable scraper for site search. As soon as sites change their HTML structure, my scrape is borked. When looking to build my own search results page, I looked around and the best solution I found was Zenserp. Zenserp, created by Saas Industries, is an easy to use, logical SERP API for getting customizable Google search results!
Quick Hits
Rolling your own SERP is verify difficult and impossible to maintain (think proxy networks and CAPTCHAs) — trust Zenserp to do it for you
API payloads are logical and easy to use
Get multiple data types: organic, paid, local, maps, and more
Zenserp does not store or sell your query requests
Very strong infrastructure – no QPS limit!
Provides a method for bulk data retrieval to consolidate API requests
Free to start!
Let’s have a look at using Zenserp’s API!
Using zenserp
After signing up for a free Zenserp account, you can start making requests. zenserp even has a nice question builder that allows you to export search code in cURL, Python, PHP, or Node.js:
Note: the API key used here was rotated and will no longer work
Note the available options: the search phrase, location requesting from, which Google domain you prefer, and language. Additional options include whether you want a text or image search, the number of results, and which page of results (page 1, page 2, etc.) you’d like. Super customizable!
Let’s have a look at the resulting payload:
{ "query": { "q": "david walsh blog", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "MY_API_KEY", "url": "https://google.com/search?q=david+walsh+blog&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "organic": [ { "position": 1, "title": "David Walsh Blog - JavaScript Consultant", "url": "https://davidwalsh.name/", "destination": "https://davidwalsh.name", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP, CSS, WordPress, and everything else development.", "isAmp": false, "sitelinks": [ { "title": "About David Walsh", "description": "David Walsh. My name is David Walsh. I'm a 33-year old web ...", "url": "https://davidwalsh.name/about-david-walsh" }, { "title": "7 Essential JavaScript Functions", "description": "Seven JavaScript functions that every developer should keep ...", "url": "https://davidwalsh.name/essential-javascript-functions" }, { "title": "JavaScript", "description": "The webpack JavaScript utility has taken over the modern ...", "url": "https://davidwalsh.name/tutorials/javascript" }, { "title": "Incredible Demos", "description": "Chris Coyier's Favorite CodePen Demos IV. Did you know you ...", "url": "https://davidwalsh.name/tutorials/demos" }, { "title": "Recent Tutorials", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP ...", "url": "https://davidwalsh.name/page/2" }, { "title": "I Don't Hate Arrow Functions", "description": "While arrow functions clearly have a ubiquitous community ...", "url": "https://davidwalsh.name/i-dont-hate-arrow-functions" } ] }, { "position": 2, "title": "David Walsh Blog - Home | Facebook", "url": "https://www.facebook.com/davidwalshblog/", "destination": "https://www.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison. 7996 likes · 23 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, { "position": 3, "title": "David Walsh Blog - Facebook", "url": "https://d.facebook.com/davidwalshblog/?__tn__=%2As-R", "destination": "https://d.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison, WI. 8005 likes · 7 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, // ... ], "number_of_results": 32600000 }
Since I wanted organic results, the organic property provides an interesting array of results which match when I do a manual query of david walsh blog. Notice the amount of detail in the first result, especially sitelinks, which represents the sub-links you see within a manual search on Google — wow!
If there are paid search results, those will be in the payload as well. Let’s look up bitcoin:
{ "query": { "q": "bitcoin", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "API_KEY", "url": "https://google.com/search?q=bitcoin&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "paid": [ { "paidPosition": "top", "title": "Buy & Sell Bitcoin | #1 in Crypto Security & Safety | coinbase.com", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABAAGgJ3cw&sig=AOD64_1Gml8jrX5PSNhnHex8ZD2ErH6vIg&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgVEAE&adurl", "destinationUrl": "https://www.coinbase.com/signup", "breadcrumbs": [], "visurl": "www.coinbase.com/", "description": "Coinbase is the Safest, Most Secure Place to Buy and Sell Bitcoin, Ethereum, and More. We’re Obsessed with Security So You Don’t Have to Be. Buy, Sell, and Trade Crypto Safely. iOS & Android App. Secure Storage. Over 20M+ Users. Most Trusted." }, { "paidPosition": "top", "title": "Buy Bitcoin In 90 Seconds | Get Started For Free", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABABGgJ3cw&sig=AOD64_0a5ShbhklcaLMdUNRMqxNkiDtDSw&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgWEAE&adurl", "destinationUrl": "https://gemini.com/", "breadcrumbs": [ { "url": "https://exchange.gemini.com/register", "text": "Buy Bitcoin Instantly" }, { "url": "https://gemini.com/", "text": "\"Best Crypto Exchange\"" }, { "url": "https://gemini.com/security/", "text": "Industry-Best Security" } ], "visurl": "www.gemini.com/", "description": "Gemini Makes Buying Bitcoin Simple, Safe & Secure. Open A Free Account Today & Start Experiencing The Future of Money! Trade In Minutes. Superior Security. Most Trusted. Free Sign Up. Services: Buy & Sell Bitcoin, Price Charts, Price Alerts, Secure Custody." } ], "organic": [ { "position": 1, "isCarousel": true, "isVertical": false, "news": [ { "title": "China's PBC Is Warming Up To Digital Currencies -- Good News For ...Forbes9 hours ago", "url": "https://www.forbes.com/sites/panosmourdoukoutas/2019/09/14/chinas-pbc-is-warming-up-to-digital-currencies-good-news-for-bitcoin-eth-xrp-and-ltc/" }, { "title": "Bitcoin Price Indicator May Signal Next Leg HigherCoinDesk12 hours ago", "url": "https://www.coindesk.com/bitcoin-price-indicator-may-signal-next-leg-higher" }, { "title": "Ethereum Network Demand Surges; Will ETH’s Price Follow?NewsBTC3 mins ago", "url": "https://www.newsbtc.com/2019/09/14/ethereum-network-demand-surges-will-eths-price-follow/" } ] }, // ... ], "number_of_results": 513000000 }
Notice the paid key which provides results usually seen at the top of searches for which were paid for by each vendor.
The above queries are the simplest but only the tip of the iceberg; here are a few other valuable search options:
device – mobile or desktop results
tbm – image search (isch) or maps (lcl)
timeframe – h, d, w, etc. for search results based on time units
There are loads of other customizations available to see in the Zenserp documentation.
Google Trends
Zenserp also provides a /trends API endpoint to query Google Trends:
curl https://app.zenserp.com/api/v1/trends \ -F "keyword[]=bitcoin" \ -F "keyword[]=ethereum" \ -F "apikey=YOUR-API-KEY"
Notice that you can provide multiple keywords using the array syntax!
Use Cases
The obvious use case for Zenserp is creating my own custom search page but SERPs are so much more useful than that — you could brainstorm any variety of use cases:
Monitoring your (or the competition’s) search placement for an important keyword
Tracking popular trends
Analyzing searches your users are making via your own search forms using SERP in the background
Downloading images that match a given term
Tracking a given business type’s density in a given area using Maps search
….too many to list!
As much as I love trusting my own scraping talents, it’s so much easier to trust Zenserp. I save time in maintenance and get the advantage of their easy to use API and its wealth of options. The more I learn about topics in this industry, the more I’ve learned to delegate difficult tasks to experts. Zenserp is the my expert in Google search results APIs.
The post Easy Google Search Result API with Zenserp (Sponsored) appeared first on David Walsh Blog.
Easy Google Search Result API with Zenserp (Sponsored) published first on https://deskbysnafu.tumblr.com/
0 notes
Text
Easy Google Search Result API with Zenserp (Sponsored)
No matter how much experience I gain in this industry, one task I continue to fail at is building an accurate, flexible, and maintainable scraper for site search. As soon as sites change their HTML structure, my scrape is borked. When looking to build my own search results page, I looked around and the best solution I found was Zenserp. Zenserp, created by Saas Industries, is an easy to use, logical SERP API for getting customizable Google search results!
Quick Hits
Rolling your own SERP is verify difficult and impossible to maintain (think proxy networks and CAPTCHAs) — trust Zenserp to do it for you
API payloads are logical and easy to use
Get multiple data types: organic, paid, local, maps, and more
Zenserp does not store or sell your query requests
Very strong infrastructure – no QPS limit!
Provides a method for bulk data retrieval to consolidate API requests
Free to start!
Let’s have a look at using Zenserp’s API!
Using zenserp
After signing up for a free Zenserp account, you can start making requests. zenserp even has a nice question builder that allows you to export search code in cURL, Python, PHP, or Node.js:
Note: the API key used here was rotated and will no longer work
Note the available options: the search phrase, location requesting from, which Google domain you prefer, and language. Additional options include whether you want a text or image search, the number of results, and which page of results (page 1, page 2, etc.) you’d like. Super customizable!
Let’s have a look at the resulting payload:
{ "query": { "q": "david walsh blog", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "MY_API_KEY", "url": "https://google.com/search?q=david+walsh+blog&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "organic": [ { "position": 1, "title": "David Walsh Blog - JavaScript Consultant", "url": "https://davidwalsh.name/", "destination": "https://davidwalsh.name", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP, CSS, WordPress, and everything else development.", "isAmp": false, "sitelinks": [ { "title": "About David Walsh", "description": "David Walsh. My name is David Walsh. I'm a 33-year old web ...", "url": "https://davidwalsh.name/about-david-walsh" }, { "title": "7 Essential JavaScript Functions", "description": "Seven JavaScript functions that every developer should keep ...", "url": "https://davidwalsh.name/essential-javascript-functions" }, { "title": "JavaScript", "description": "The webpack JavaScript utility has taken over the modern ...", "url": "https://davidwalsh.name/tutorials/javascript" }, { "title": "Incredible Demos", "description": "Chris Coyier's Favorite CodePen Demos IV. Did you know you ...", "url": "https://davidwalsh.name/tutorials/demos" }, { "title": "Recent Tutorials", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP ...", "url": "https://davidwalsh.name/page/2" }, { "title": "I Don't Hate Arrow Functions", "description": "While arrow functions clearly have a ubiquitous community ...", "url": "https://davidwalsh.name/i-dont-hate-arrow-functions" } ] }, { "position": 2, "title": "David Walsh Blog - Home | Facebook", "url": "https://www.facebook.com/davidwalshblog/", "destination": "https://www.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison. 7996 likes · 23 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, { "position": 3, "title": "David Walsh Blog - Facebook", "url": "https://d.facebook.com/davidwalshblog/?__tn__=%2As-R", "destination": "https://d.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison, WI. 8005 likes · 7 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, // ... ], "number_of_results": 32600000 }
Since I wanted organic results, the organic property provides an interesting array of results which match when I do a manual query of david walsh blog. Notice the amount of detail in the first result, especially sitelinks, which represents the sub-links you see within a manual search on Google — wow!
If there are paid search results, those will be in the payload as well. Let’s look up bitcoin:
{ "query": { "q": "bitcoin", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "API_KEY", "url": "https://google.com/search?q=bitcoin&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "paid": [ { "paidPosition": "top", "title": "Buy & Sell Bitcoin | #1 in Crypto Security & Safety | coinbase.com", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABAAGgJ3cw&sig=AOD64_1Gml8jrX5PSNhnHex8ZD2ErH6vIg&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgVEAE&adurl", "destinationUrl": "https://www.coinbase.com/signup", "breadcrumbs": [], "visurl": "www.coinbase.com/", "description": "Coinbase is the Safest, Most Secure Place to Buy and Sell Bitcoin, Ethereum, and More. We’re Obsessed with Security So You Don’t Have to Be. Buy, Sell, and Trade Crypto Safely. iOS & Android App. Secure Storage. Over 20M+ Users. Most Trusted." }, { "paidPosition": "top", "title": "Buy Bitcoin In 90 Seconds | Get Started For Free", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABABGgJ3cw&sig=AOD64_0a5ShbhklcaLMdUNRMqxNkiDtDSw&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgWEAE&adurl", "destinationUrl": "https://gemini.com/", "breadcrumbs": [ { "url": "https://exchange.gemini.com/register", "text": "Buy Bitcoin Instantly" }, { "url": "https://gemini.com/", "text": "\"Best Crypto Exchange\"" }, { "url": "https://gemini.com/security/", "text": "Industry-Best Security" } ], "visurl": "www.gemini.com/", "description": "Gemini Makes Buying Bitcoin Simple, Safe & Secure. Open A Free Account Today & Start Experiencing The Future of Money! Trade In Minutes. Superior Security. Most Trusted. Free Sign Up. Services: Buy & Sell Bitcoin, Price Charts, Price Alerts, Secure Custody." } ], "organic": [ { "position": 1, "isCarousel": true, "isVertical": false, "news": [ { "title": "China's PBC Is Warming Up To Digital Currencies -- Good News For ...Forbes9 hours ago", "url": "https://www.forbes.com/sites/panosmourdoukoutas/2019/09/14/chinas-pbc-is-warming-up-to-digital-currencies-good-news-for-bitcoin-eth-xrp-and-ltc/" }, { "title": "Bitcoin Price Indicator May Signal Next Leg HigherCoinDesk12 hours ago", "url": "https://www.coindesk.com/bitcoin-price-indicator-may-signal-next-leg-higher" }, { "title": "Ethereum Network Demand Surges; Will ETH’s Price Follow?NewsBTC3 mins ago", "url": "https://www.newsbtc.com/2019/09/14/ethereum-network-demand-surges-will-eths-price-follow/" } ] }, // ... ], "number_of_results": 513000000 }
Notice the paid key which provides results usually seen at the top of searches for which were paid for by each vendor.
The above queries are the simplest but only the tip of the iceberg; here are a few other valuable search options:
device – mobile or desktop results
tbm – image search (isch) or maps (lcl)
timeframe – h, d, w, etc. for search results based on time units
There are loads of other customizations available to see in the Zenserp documentation.
Google Trends
Zenserp also provides a /trends API endpoint to query Google Trends:
curl https://app.zenserp.com/api/v1/trends \ -F "keyword[]=bitcoin" \ -F "keyword[]=ethereum" \ -F "apikey=YOUR-API-KEY"
Notice that you can provide multiple keywords using the array syntax!
Use Cases
The obvious use case for Zenserp is creating my own custom search page but SERPs are so much more useful than that — you could brainstorm any variety of use cases:
Monitoring your (or the competition’s) search placement for an important keyword
Tracking popular trends
Analyzing searches your users are making via your own search forms using SERP in the background
Downloading images that match a given term
Tracking a given business type’s density in a given area using Maps search
….too many to list!
As much as I love trusting my own scraping talents, it’s so much easier to trust Zenserp. I save time in maintenance and get the advantage of their easy to use API and its wealth of options. The more I learn about topics in this industry, the more I’ve learned to delegate difficult tasks to experts. Zenserp is the my expert in Google search results APIs.
The post Easy Google Search Result API with Zenserp (Sponsored) appeared first on David Walsh Blog.
Easy Google Search Result API with Zenserp (Sponsored) published first on https://deskbysnafu.tumblr.com/
0 notes
Text
Easy Google Search Result API with Zenserp (Sponsored)
No matter how much experience I gain in this industry, one task I continue to fail at is building an accurate, flexible, and maintainable scraper for site search. As soon as sites change their HTML structure, my scrape is borked. When looking to build my own search results page, I looked around and the best solution I found was Zenserp. Zenserp, created by Saas Industries, is an easy to use, logical SERP API for getting customizable Google search results!
Quick Hits
Rolling your own SERP is verify difficult and impossible to maintain (think proxy networks and CAPTCHAs) — trust Zenserp to do it for you
API payloads are logical and easy to use
Get multiple data types: organic, paid, local, maps, and more
Zenserp does not store or sell your query requests
Very strong infrastructure – no QPS limit!
Provides a method for bulk data retrieval to consolidate API requests
Free to start!
Let’s have a look at using Zenserp’s API!
Using zenserp
After signing up for a free Zenserp account, you can start making requests. zenserp even has a nice question builder that allows you to export search code in cURL, Python, PHP, or Node.js:
Note: the API key used here was rotated and will no longer work
Note the available options: the search phrase, location requesting from, which Google domain you prefer, and language. Additional options include whether you want a text or image search, the number of results, and which page of results (page 1, page 2, etc.) you’d like. Super customizable!
Let’s have a look at the resulting payload:
{ "query": { "q": "david walsh blog", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "MY_API_KEY", "url": "https://google.com/search?q=david+walsh+blog&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "organic": [ { "position": 1, "title": "David Walsh Blog - JavaScript Consultant", "url": "https://davidwalsh.name/", "destination": "https://davidwalsh.name", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP, CSS, WordPress, and everything else development.", "isAmp": false, "sitelinks": [ { "title": "About David Walsh", "description": "David Walsh. My name is David Walsh. I'm a 33-year old web ...", "url": "https://davidwalsh.name/about-david-walsh" }, { "title": "7 Essential JavaScript Functions", "description": "Seven JavaScript functions that every developer should keep ...", "url": "https://davidwalsh.name/essential-javascript-functions" }, { "title": "JavaScript", "description": "The webpack JavaScript utility has taken over the modern ...", "url": "https://davidwalsh.name/tutorials/javascript" }, { "title": "Incredible Demos", "description": "Chris Coyier's Favorite CodePen Demos IV. Did you know you ...", "url": "https://davidwalsh.name/tutorials/demos" }, { "title": "Recent Tutorials", "description": "A blog featuring tutorials about JavaScript, HTML5, AJAX, PHP ...", "url": "https://davidwalsh.name/page/2" }, { "title": "I Don't Hate Arrow Functions", "description": "While arrow functions clearly have a ubiquitous community ...", "url": "https://davidwalsh.name/i-dont-hate-arrow-functions" } ] }, { "position": 2, "title": "David Walsh Blog - Home | Facebook", "url": "https://www.facebook.com/davidwalshblog/", "destination": "https://www.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison. 7996 likes · 23 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, { "position": 3, "title": "David Walsh Blog - Facebook", "url": "https://d.facebook.com/davidwalshblog/?__tn__=%2As-R", "destination": "https://d.facebook.com › davidwalshblog", "description": "David Walsh Blog, Madison, WI. 8005 likes · 7 talking about this. David Walsh's blog about HTML5, JavaScript (MooTools, jQuery, Dojo), CSS, PHP, AJAX,...", "isAmp": false }, // ... ], "number_of_results": 32600000 }
Since I wanted organic results, the organic property provides an interesting array of results which match when I do a manual query of david walsh blog. Notice the amount of detail in the first result, especially sitelinks, which represents the sub-links you see within a manual search on Google — wow!
If there are paid search results, those will be in the payload as well. Let’s look up bitcoin:
{ "query": { "q": "bitcoin", "hl": "en", "gl": "US", "location": "United States", "search_engine": "google.com", "apikey": "API_KEY", "url": "https://google.com/search?q=bitcoin&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw&hl=en&gl=US&sourceid=chrome&ie=UTF-8" }, "paid": [ { "paidPosition": "top", "title": "Buy & Sell Bitcoin | #1 in Crypto Security & Safety | coinbase.com", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABAAGgJ3cw&sig=AOD64_1Gml8jrX5PSNhnHex8ZD2ErH6vIg&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgVEAE&adurl", "destinationUrl": "https://www.coinbase.com/signup", "breadcrumbs": [], "visurl": "www.coinbase.com/", "description": "Coinbase is the Safest, Most Secure Place to Buy and Sell Bitcoin, Ethereum, and More. We’re Obsessed with Security So You Don’t Have to Be. Buy, Sell, and Trade Crypto Safely. iOS & Android App. Secure Storage. Over 20M+ Users. Most Trusted." }, { "paidPosition": "top", "title": "Buy Bitcoin In 90 Seconds | Get Started For Free", "trackingUrl": "https://google.com/aclk?sa=l&ai=DChcSEwjDssyHo9HkAhUahtUKHXNyAlUYABABGgJ3cw&sig=AOD64_0a5ShbhklcaLMdUNRMqxNkiDtDSw&q&ved=2ahUKEwjXq8aHo9HkAhXSZVAKHXrWAUoQ0Qx6BAgWEAE&adurl", "destinationUrl": "https://gemini.com/", "breadcrumbs": [ { "url": "https://exchange.gemini.com/register", "text": "Buy Bitcoin Instantly" }, { "url": "https://gemini.com/", "text": "\"Best Crypto Exchange\"" }, { "url": "https://gemini.com/security/", "text": "Industry-Best Security" } ], "visurl": "www.gemini.com/", "description": "Gemini Makes Buying Bitcoin Simple, Safe & Secure. Open A Free Account Today & Start Experiencing The Future of Money! Trade In Minutes. Superior Security. Most Trusted. Free Sign Up. Services: Buy & Sell Bitcoin, Price Charts, Price Alerts, Secure Custody." } ], "organic": [ { "position": 1, "isCarousel": true, "isVertical": false, "news": [ { "title": "China's PBC Is Warming Up To Digital Currencies -- Good News For ...Forbes9 hours ago", "url": "https://www.forbes.com/sites/panosmourdoukoutas/2019/09/14/chinas-pbc-is-warming-up-to-digital-currencies-good-news-for-bitcoin-eth-xrp-and-ltc/" }, { "title": "Bitcoin Price Indicator May Signal Next Leg HigherCoinDesk12 hours ago", "url": "https://www.coindesk.com/bitcoin-price-indicator-may-signal-next-leg-higher" }, { "title": "Ethereum Network Demand Surges; Will ETH’s Price Follow?NewsBTC3 mins ago", "url": "https://www.newsbtc.com/2019/09/14/ethereum-network-demand-surges-will-eths-price-follow/" } ] }, // ... ], "number_of_results": 513000000 }
Notice the paid key which provides results usually seen at the top of searches for which were paid for by each vendor.
The above queries are the simplest but only the tip of the iceberg; here are a few other valuable search options:
device – mobile or desktop results
tbm – image search (isch) or maps (lcl)
timeframe – h, d, w, etc. for search results based on time units
There are loads of other customizations available to see in the Zenserp documentation.
Google Trends
Zenserp also provides a /trends API endpoint to query Google Trends:
curl https://app.zenserp.com/api/v1/trends \ -F "keyword[]=bitcoin" \ -F "keyword[]=ethereum" \ -F "apikey=YOUR-API-KEY"
Notice that you can provide multiple keywords using the array syntax!
Use Cases
The obvious use case for Zenserp is creating my own custom search page but SERPs are so much more useful than that — you could brainstorm any variety of use cases:
Monitoring your (or the competition’s) search placement for an important keyword
Tracking popular trends
Analyzing searches your users are making via your own search forms using SERP in the background
Downloading images that match a given term
Tracking a given business type’s density in a given area using Maps search
….too many to list!
As much as I love trusting my own scraping talents, it’s so much easier to trust Zenserp. I save time in maintenance and get the advantage of their easy to use API and its wealth of options. The more I learn about topics in this industry, the more I’ve learned to delegate difficult tasks to experts. Zenserp is the my expert in Google search results APIs.
The post Easy Google Search Result API with Zenserp (Sponsored) appeared first on David Walsh Blog.
Easy Google Search Result API with Zenserp (Sponsored) published first on https://deskbysnafu.tumblr.com/
0 notes